본문 바로가기

Spring17

@Id와 @Convert가 같이 있을 때 정상 동작하지 않는 이유 문제 상황 Entity에서 테이블의 컬럼이 String 타입인 것을 LocalDate 타입으로 변경하려고 했습니다. 기존에 정의 되어 있는 Converter 구현체가 있었기 때문에 @Convert 어노테이션을 사용해서 적용했는데, 실제로 Converter로 로직을 타지 않고 java.sql.Date 클래스의 valueOf 메서드가 호출되고 있었습니다. java.sql.Date 클래스의 valueOf 메서드는 문자열 날짜 값을 파싱할 때, 날짜 형식이 yyyy-[m]m-[d]d가 아니면, IllegalArgumentException 에러를 던지고 있습니다. 테이블에 저장되어 있는 값이 마침 yyyymmdd로 저장되어 있어서 계속 에러가 발생했습니다. class LocalDateConverter : Attr.. 2021. 8. 16.
Logback JSON 포맷으로 출력하기 의존성 추가 build.gradle 파일에 아래 의존성을 추가한다. compileOnly("ch.qos.logback.contrib:logback-jackson:0.1.5") compileOnly("ch.qos.logback.contrib:logback-json-classic:0.1.5") JsonLayout 설정하기 logback.xml 파일에 로그 메시지를 JsonLayout으로 출력되도록 설정한다. 추가적으로 JacksonJsonFormatter을 설정하면 Json 로그 메시지가 Json Formatter가 적용되어 출력된다. yyyy-MM-dd'T'HH:mm:ss.SSSX Etc/UTC true true 2020. 2. 28.
스프링 데이터 JPA와 Querydsl 인프런 강의 정리 김영한님이 강의하신 실전! Querydsl 강좌를 학습하고 정리한 내용입니다. 소스코드는 Github를 참고해주세요. 시작하기에 앞서 테스트용 MySQL 설치 및 Gradle 프로젝트에서 Querydsl 설정하는 방법에 대해 알아봅니다. Docker MySQL 설치 docker run -d --name test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin007! mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci Gradle에서 Querydsl 설정 build.gradle 파일에 querydsl 설정을 추가한다. 설정을 추가하고 build 또는 compileQuerydsl을 .. 2020. 2. 3.
스프링 부트와 JPA 활용1,2 인프런 강의 정리 김영한님이 강의하신 인프런 스프링 부트와 JPA 활용1, 2 강좌를 학습하고 정리한 내용입니다. 소스코드는 Github를 참고해주세요 Gradle 의존관계 보기 ./gradlew dependencies --configuration compileClasspath Docker MySQL 설치 docker run -d --name test_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin007! mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 엔티티 설계시 주의점 1.가급적 Setter를 사용하지 말자 2.모든 연관관계는 지연로딩(Lazy)으로 설정하자 Fetch Join, 엔티티 .. 2020. 1. 20.
Spring Security 인프런 강의 정리 백기선님이 강의하신 인프런 스프링 시큐리티 강좌를 학습하고 정리한 내용입니다. 소스코드는 Github를 참고해주세요. Prerequisites Installing MySQL 5.7 Account Info Normal User : user / 123 Admin User : admin / !@# Password Encoder 비밀번호는 평문이 아닌 단방향 알고리즘으로 인코딩해서 저장해야 한다 {id}encodePassword PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); Password Encoder 종류 BCryptPasswordEncoder NoOpPasswordEncoder Pbkd.. 2019. 9. 5.
Spring 파일 업로드 구현 및 파일 크기 설정 파일 업로드 컨트롤러 생성 @Controller @Slf4j public class FileUploadController { public static final Path path = Paths.get(System.getProperty("user.home"), ".upload"); @GetMapping("/form") public String form() { return "form"; } @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile multipartFile) { log.info("upload"); File targetFile = new File(path.resolve(multipartFile.getOrigi.. 2019. 7. 26.