Spring(4)
-
Entity 클래스에서 자주 사용하는 어노테이션
@NoArgsConstructor(access = AccessLevel.PROTECTED)JPA는 리플렉션을 통해 엔티티를 생성할 때 기본 생성자가 필요하지만, 일반적으로 직접 사용하지 않도록 접근제한자를 protected 또는 private 으로 설정한다.리플렉션이란 ?구체적인 Class Type을 알지 못하더라도 해당 Class의 method, type, variable들에 접근할 수 있도록 해주는 자바 API이며, 컴파일된 바이트 코드를 통해 Runtime에 동적으로 특정 Class의 정보를 추출할 수 있는 프로그래밍 기법이다.리플렉션을 이용하여 객체의 필드값을 동적으로 읽어와서 JSON으로 직렬화 할 수 있다.@GeneratedValue(strategy = GenerationType.IDENTIT..
2024.09.08 -
스프링 3 이상 Multipart Config 설정
포스트맨에서는 파일 업로드가 잘 되는데, 클라이언트 측에서 access-control-allow-credentials 이 뜬다고 해서MultipartFile 에 대한 설정을 따로 해줘야 하나 검색했다. 스프링 3 이상부터는 Multipart 처리를 위해 별도의 config 파일을 만들어줘야했던 것 ! import jakarta.servlet.MultipartConfigElement;import org.springframework.boot.web.servlet.MultipartConfigFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;impor..
2024.07.30 -
Spring Security JWTFilter에서 Exception 처리하기
JWT 토큰 로그인을 구현하다가, JWT Filter에서 토큰 관련하여 잘못된 요청이 들어오면CustomException을 던지는 방식으로 코드를 작성했는데 아무리해도 Exception 처리가 안되는 것 같았다. 찾아보니 Spring Security 에서는 기존에 사용하던 Custom Exception 을 처리하지 못한다고 한다. 그 이유는Filter는 Dispatcher Servlet보다 앞단에 존재하고 Handler Interceptor는 뒷단에 존재하기 때문에Filter에서 보낸 예외는 Exception Handler로 처리를 못한다. -> 설정을 따로 해줘야 한다 ! @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws..
2024.07.28 -
@EnableWebMvc와 WebMvcConfigurer
Response에 timestamp를 담아서 보냈더니갑자기 localDateTime이"timestamp": [ 2024, 5, 19, 1, 24, 12, 394621000 ] 이렇게 각 항목별로 JSON Serialized 되어 리턴되는 현상이 발생했다. 원래대로라면"timestamp": "2024-05-21T23:19:49.380086" 이렇게 String 형태로 나와야 하는데 다 쪼개져서 나와서 처음에는 Jackson 라이브러리에 문제가 있나 했다.jackson 라이브러리란 ?잭슨은 JSON -> java 클래스로 Deserialize, java 클래스 -> JSON 으로 Serialize 할 때 유용한 라이..
2024.06.25