JAVA 11/boot2 ⇒ JAVA17/boot3

JAVA 11/boot2 ⇒ JAVA17/boot3

생성일
Oct 5, 2023 02:20 AM
상위 항목
최종 편집 일시
Last updated October 11, 2024
태그
JAVA
SpringBoot
하위 항목

javax → jakarta (persistence, annotation, servlet,

 

swagger

  • springfox → springdoc-openapi-ui
 

restTemplate,

  • httpClient4.x → httpClient 5.x
 

PropertyNamingStrategy.SnakeCaseStrategy.class → PropertyNamingStrategies.SnakeCaseStrategy.class

 

JPA properties 변경

// JAVA config properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect"); properties.put( "hibernate.implicit_naming_strategy", "org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl"); // hibernate 6에 // 맞게 변경 properties.put( "hibernate.physical_naming_strategy", "org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy"); // application.yml # jpa 설정 jpa: database: postgresql hibernate: ddl-auto: none naming: physical-strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategy
 
 

@PropertySource에 관한 설정

  • common 모듈을 다른 모든 모듈이 의존하고 있고 이 common 모듈의 resources 안에 있는 application-common.yml을 다른 모듈이 공유할 수 있도록 했으면 좋겠는 상황이 발생했다. (완전히 공통으로 필요한 속성들만 해당 파일에 정의)
  • 처음에는 그냥 각 모듈의 application.yml에 필요한 설정값을 복붙해서 실행했는데 이렇게 하면 나중에 어떤 값이 변경될 시 파일을 다 찾아서 고쳐야 해서 실수의 위험이 커지는 안 좋은 방법이라는 생각이 들었다.
  • 원래는 application-${profile}.yml의 방식으로 profile별 설정 파일을 나누어 두었는데 이를 아래와 같은 형태로 통합해서 쓰려고 하다보니 발생한 문제였다.
    • spring: config: activate: on-profile: dev
  • build.gradle에 sourceSets 설정 추가, @PropertySource() 추가 등 생쇼를 해봤는데 application.yml에 아래 내용을 추가하는 것이 제일 간편하고 쉬운 방법이었다. 이 설정을 사용하면 dev, prod 등 —-으로 나누어둔 프로파일도 자동으로 읽힌다.
    • spring: config: import: classpath:application-common.yml
 
아래는 postgresql용 migration script
ALTER TABLE BATCH_STEP_EXECUTION ADD CREATE_TIME TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:00'; ALTER TABLE BATCH_STEP_EXECUTION ALTER COLUMN START_TIME DROP NOT NULL; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS DROP COLUMN DATE_VAL; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS DROP COLUMN LONG_VAL; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS DROP COLUMN DOUBLE_VAL; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS ALTER COLUMN TYPE_CD TYPE VARCHAR(100); ALTER TABLE BATCH_JOB_EXECUTION_PARAMS RENAME TYPE_CD TO PARAMETER_TYPE; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS ALTER COLUMN KEY_NAME TYPE VARCHAR(100); ALTER TABLE BATCH_JOB_EXECUTION_PARAMS RENAME KEY_NAME TO PARAMETER_NAME; ALTER TABLE BATCH_JOB_EXECUTION_PARAMS ALTER COLUMN STRING_VAL TYPE VARCHAR(2500); ALTER TABLE BATCH_JOB_EXECUTION_PARAMS RENAME STRING_VAL TO PARAMETER_VALUE;