🌿 Spring
🚧
아무것도 없어요😢
-
[Spring] @PostCounstruct 어노테이션🤔 Jwt 토큰과 관련된 속성들이 정의된 JwtProperties 클래스가 있다. 해당 클래스에는 토큰 생성에 필요한 시크릿키가 포함되어 있는데, 원칙적으로 이 시크릿키는 사용자에게 유출되지 않고 오직 서버에서만 알고있어야 한다. @RequiredArgsConstructor public class JwtProperties { public static final String SECRET = "Reminiscene"; public static final int ACCESS_EXPIRATION_TIME = 1000*60*10; public static final int REFRESH_EXPIRATION_TIME = 1000*60*30; public static final String TOKEN_PREFIX =..🌿 Spring2023.10.22
-
[Spring] 계층간 데이터 교환, Map vs DTO얼레벌레 프로젝트를 진행할 적에는, 레이어 간 데이터를 교환할 때 Map을 사용했다. 이유는 VO, DTO, Entity 등 데이터 객체에 대한 이해가 부족했기 때문에.. 그냥 손에 잡히는 걸 사용했던 것이다. Map을 사용하면서 여러모로 불편함을 느껴 DTO 클래스로 리팩토링했는데, 실제로 구글링해봤을 때에도 많은 개발자들이 Map보다는 DTO를 선호하는 것으로 보였다. 🤔 왜 DTO인가? Map 대신 DTO를 사용하는 이유는 뭘까? 이는 Map의 단점으로 대신할 수 있다. 타입체크 불가 Map은 일반적으로 다음과 같이 사용한다. HashMap map = new HashMap(); 다양한 타입의 데이터를 받기 위해서는 value의 제네릭 타입을 Object로 설정하는 것이 불가피하다. 하지만 모든 클래..🌿 Spring2023.10.05
-
[Springboot] Spring Security web ignore 설정🤯 REST API를 통해 싱글 페이지 애플리케이션을 구현하면서 페이지를 전환할 때마다 권한 관련 처리를 어떻게 해주어야 할지 고민했다. 현재 내가 활용하고 있는 방법은 이렇다. 클라이언트에서 페이지를 이동할 때, 라우터 가드에서 이를 가로챈다. 로컬 상태에 있는 토큰으로, 없으면 없는 채로 api에 요청을 보낸다. api는 시큐리티 필터를 통해 토큰의 유무와 그 유효성을 따지고, 다음 중 하나의 결과를 응답한다. 인증 상태 로컬 상태에 토큰이 있고, 그 토큰이 만료되지 않은 로그인 상태 인증이 필요한 페이지(마이페이지 등)라면 그대로 이동 미인증 상태를 요구하는 페이지(회원가입, 로그인 등)라면 404 에러페이지 인증 만료 상태 로컬 상태에 토큰이 있지만 그 토큰이 만료된 상태 901 에러를 반환하고 ..🌿 Spring2023.08.07
-
[Springboot] 스프링부트 Gradle 프로젝트 시작하기프로젝트 생성 이클립스나 인텔리제이같은 IDE에서 프로젝트를 생성할 수도 있지만 보다 간편한 방법을 사용해보자. 스프링 이니셜라이즈 🔗를 사용하면 손쉽게 스프링부트 프로젝트를 생성할 수 있다. 프로젝트 관련 사항들을 설정하고 genertate 버튼을 누르면 다운받을 수 있다. 설정 가능한 몇가지 사항들에 대해서 알아보자. Project 프로젝트를 빌드해주는 라이브러리 설정. 요즘은 Maven에서 Gradle로 넘어오는 추세 Spring Boot 3.x 버전은 Java 17버전부터 지원하니 유의하자. SNAPSHOT은 아직 만들고 있는 버전, M1은 아직 정식 릴리즈되지 않은 버전이다. 참고해서 버전을 설정하도록 하자. Dependencies 의존성을 주입할 라이브러리를 설정하는 부분. 기본적으로 Spri..🌿 Spring2023.07.27
-
[Springboot] o.s.b.d.LoggingFailureAnalysisReporter 에러프로젝트를 생성하고 실행하는 중 에러가 발생했다. resources/application.properties에 다음 코드를 추가하면 해결 완. spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration🌿 Spring2023.07.27
-
[Spring] 스프링 기본설정 xml → @Configuration 변경📌 Java Configuration 기본적으로 프로젝트를 생성하면 모든 web.xml, root-context.xml, app-servlet.xml 세가지의 기본 설정파일이 만들어진다. Spring Framework 3.1부터는 이러한 xml 설정파일을 Java 기반으로 작성할 수 있도록 각종 클래스와 인터페이스, 어노테이션을 지원하고 있다. 둘 중 어떤 방식을 사용해도 괜찮지만, 다음과 같은 이유로 되도록 Java Config 방식으로 변경해 사용하는 것을 권장한다. 더 많은 정보를 얻을 수 있다. 컴파일 에러를 얻을 수 있다. 설정 변경에 용이하다. 나는 현재 진행하고 있는 프로젝트의 기본 설정을 자바 클래스로 변경하기로 했다. 위와 같은 이유도 있지만, xml과 java config를 섞어 쓰니 ..🌿 Spring2023.06.09
-
[Spring] Spring Security 한글깨짐 문제😵 Trouble 회원가입을 구현하던 중 닉네임을 DB에 저장할 때 한글이 깨지는 문제가 발생했다. Encoding이 제대로 되지 않아 발생하는 오류라고 판단, 관련 사항들을 확인했다. STS 설정, 설정파일의 인코딩 필터, JSP 파일 모두 문제가 없었다. 콘솔을 찍어보니 애초에 파라미터가 컨트롤러에 들어올 때부터 인코딩이 되지 않는다는 것을 확인했다. 모든 요청에 해당되는 문제인가 싶어 테스트를 해보았다. text는 아주 잘 넘어왔다. POST 방식일때도 마찬가지였다. 무엇이 문제인지 생각하던 중 csrf 토큰을 생성하기 위해 넣어주었던 코드가 생각났다. 다시 코드를 넣어보니 아까처럼 한글 깨짐 현상이 발생했다😲 🔫 인코딩 필터 해당 프로젝트는 모든 인코딩을 UTF-8로 설정하기 위해 Characte..🌿 Spring2023.06.02
-
[Spring] 트랜잭션 xml 설정트랜잭션에 대한 개념은 여기로 🔗 📁 트랜잭션 데이터베이스의 상태를 변화시키는 논리적 작업단위 계좌에 있는 돈을 타인에게 송금하는 프로그램을 만들 때에는 다음 두가지 작업을 구현해야 한다. 내 계좌에서 돈을 출금한다. 타인의 계좌에 돈을 입금한다. 1번 과정은 순조롭게 마무리 됐는데... 만약 2번에서 에러가 발생한다면? 내 계좌에서 출금은 됐는데 입금을 받지 못해 돈이 증발될 것이다. 따라서 두 작업을 하나의 트랜잭션으로 묶고 정상적으로 작동하면 커밋하고 에러가 나면 롤백하는 처리가 필요하다. 스프링에서는 트랜잭션 적용을 돕기 위해 Spring AOP를 활용하고 추상화를 제공한다. xml 설정파일을 통해 프로젝트의 Service 단에서 트랜잭션 처리를 해보자. 👆 pom.xml 트랜잭션 처리를 위한 d..🌿 Spring2023.05.25
-
[Spring] 스프링 Bean📁 Bean 스프링에서의 객체 기존 자바 프로그래밍에서 객체를 생성하기 위해서는 클래스를 만들고 new 연산자를 이용해 직접 인스턴스를 생성했다. 그러나 스프링은 프로그램의 제어권을 가지기 위해 자바 객체를 자신만의 형태로 바꾸고, Bean이라고 칭한다. 객체를 Bean으로 등록한다는 것은 곧 객체의 제어권을 스프링 컨테이너로 넘긴다는 것을 의미한다. 📁 스프링 컨테이너 빈을 관리하는 컨테이너 싱글톤 레지스트리, 의존성 주입, AOP 등 여러 기능들을 제공하고 빈의 생명주기를 관리한다. 🤔 싱글톤 Singleton 스프링은 기본적으로 싱글톤으로 빈을 생성하여 매 요청마다 같은 객체를 돌려준다. 매번 새로운 객체를 생성하는 것보다 이미 생성된 객체를 가져오는 것이 효율적이기 때문이다. 서버의 규모가 커지면..🌿 Spring2023.05.15
-
[Spring] 스프링 xml 설정파일스프링에서는 제어 반전으로 설정파일을 통해 객체를 정의하고 사용할 수 있다. 기본적인 스프링 설정 파일의 종류와 역할에 대해 알아보자. 프로젝트에서 확장자가 .xml로 끝나는 파일이 바로 설정파일이다. Spring MVC 프로젝트의 설정파일은 다음과 같다. 📁 pom.xml 📁 web.xml 📁 servlet-context.xml 📁 root-context.xml 📁 pom.xml Project Object Model 프로젝트 버전 관리, 빌드에 필요한 환경 설정, 라이브러리 의존성을 관리하는 메이븐 설정파일 4.0.0 ... 1.0.0-BUILD-SNAPSHOT ... ... 프로젝트의 정보를 기술하는 태그 모든 설정은 이 태그 내에 작성해야 한다. 4.0.0 com.spring muknolja Muk..🌿 Spring2023.05.14