Spring 3

[Spring] Jasypt를 이용하여 코드 암호화하기

배경회사에서 새로 진행되는 프로젝트에 인증서를 적용하기 위해 yml에 인증서 정보를 적어둬야한다.그런데, yml 파일에 인증서의 비밀번호를 그대로 노출시키기가 꺼려졌다.깃헙을 이용하는 것이 아니라 secret key도 사용할 수 없으니, 해당 비밀번호를 암호화해서 저장해야겠다고 생각했고, 찾아보던 중 Jasypt라는 라이브러리를 알게 되었다.   적용    1. build.gradle에 import하기implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.5'참고로 자바는 jdk 17을 사용 중이고, springboot는 3.2.11버전이다.    2. JasyptConfig.java 클래스 작성하기Jasypt를 사용하기 위해서는 ..

Spring 2024.11.20

[Spring] AttributeConverter를 사용해 원하는 포맷으로 저장하기

DB에 LocalDate나 LocalTime 혹은 LocalDateTime을 원하는 형식으로 넣을 수는 없을까?LocalTime은 HH:mm:ss 형식으로 저장된다.하지만, 이를 ms 단위까지 저장하고 싶다면? 이를 위해 필요한 AttributeConverter를 소개한다.   AttributeConverterAttributeConverter는 DB에 저장될 때의 형식을 지정할 수 있게 해준다.해당 인터페이스는 2개의 메서드 구현을 요구한다. 1. convertToDatabaseColumn말그대로, DB에 저장할 때를 의미한다.우리가 LocalTime을 HH:mm:ss.SSS방식으로 저장하고자 한다면 아래와 같이 작성할 수 있다. private static final DateTimeFormatter..

Spring 2024.11.20

[Spring] @RequestBody와 @RequestParam

프로젝트를 진행하던 중, form-Data와 json을 서버에서 처리하는 방식에 대한 오류를 다루던 중 알게된 @RequestBody와 @RequestParam의 명확한 차이를 정리해보자. @ReqeustBody 조금 쉽게 설명하면 클라이언트가 전송하는 JSON을 받아오기 위해 특화된 어노테이션이라고 이해해도 좋다. 나는 Body에 있는 데이터 중 JSON이 아닌 바이트나 스트링이여도 알아서 되는 줄 알았던 바보같은 생각을 했던 것이다... 그래서 Multipart와 같이 바이트로 전달되는 것들은 파싱할 수 없다. 만약 클라이언트에서 "/nickname" 경로로 POST 요청을 보낸다고 해보자. body에 아래와 같은 JSON 형태를 전송하게 된다면 { "nickname": "dd", "token": "..

Spring 2024.01.22