mysql / mariadb를 사용하면서 db table에 JsonType column (LongText 유형에 json_valid 제약 조건이 걸려있는 column)을 사용하는 경우 해당 column은 json 형태로 데이터를 저장할 수 있다.json data는 java object에선 특정 도메인 또는 Map으로 지정하여 사용할 수 있고 Spring Data Jpa를 사용하는 경우 @JdbcTypeCode(SqlTypes.JSON) 을 해당 값에 지정하면 된다.Mybatis에서는 db table column의 json data를 java의 Map으로 변환해 주는 처리가 없어서 mysql 쿼리 사용 시 오류가 발생한다.https://mybatis.org/mybatis-3/configuration.htm..
Spring Boot 기반 autoconfigure 환경을 제공하는 프로젝트 경우 테스트 코드 작성 시 Spring이 제공하는 ApplicationContextRunner , WebApplicationContextRunner , ReactiveWebApplicationContextRunner 를 사용하여 작성하게 된다.예전엔 ApplicationContextRunner 또는 WebApplicationContextRunner 사용 시 debug=true 옵션을 추가하면 boot 관련 로그를 확인할 수 있었다.버전이 올라가면서 로그를 확인하는 방식이 바뀌었고 기존 코드의 runner 실행 시 로그가 보이지 않게 되었다.아래처럼 initializer로 ConditionEvaluationReportLogging..
OpenTelemetry Collector extension 소개opentelemetry-collector 를 사용하면서 다양한 extension을 추가하여 사용할 수 있다.https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/extensionextension을 활성화하면 특정 주소로 해당 extension을 호출하여 사용하게 된다.이 중 zpages , pprof , health_check extension를 사용해 보면서 기록을 남겨본다.전체 설정 파일은 마지막 부분에 정리해 두었다.K8S deployment, service 설정 부분extension 사용 시 endpoint 기본 설정이 localhost:[해당 ext..
전체 Release Notes 목록은 이곳에서 확인할 수 있습니다.https://luvstudy.tistory.com/tag/Release%20Noteshttps://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4-Release-Notes17 revision 기준으로 작성됨Spring Boot 3.4 Release NotesUpgrading from Spring Boot 3.3RestClient and RestTemplateReactor Netty의 HttpClient 또는 JDK의 HttpClient 를 사용하도록 RestClient 및 RestTemplate 을 auto-configure 하는 지원이 추가되었습니다.우선순위에 따라 지원되는 c..
Java entitiy domain에서 특정 class나 map으로 db의 json 데이터를 바인딩하여 사용할 수 있다.Java domain class에 변경 사항이나 추가 사항을 계속 추가하면서 db에 조금씩 column을 수정/추가하는 것보다db의 json data 저장 column 하나에 가변적으로 값을 계속 추가하여java 쪽 entitiy class에선 json domain class의 최소한의 수정이나 map에서 변경되거나 추가된 값을 호출하여 사용하는 식으로 관리할 수 있다.Java Entity Domain Entity JSON type 선언https://bootify.io/spring-data/hibernate-json-type.htmlHibernate 6.0 이상에선 json type을 ..
기본적인 @ConfigurationProperties , @PropertySource 사용Spring Boot 기반 프로젝트에서 @ConfigurationProperties 로 지정된 bean은 처음 application이 startup 할 때 bean이 생성되고 여러 properties 파일에서 읽어와 Environment에 저장된 값을 가져와 해당 bean에 바인딩해 준다.다음과 같이 @ConfigurationProperties 를 선언하고@ConfigurationProperties(prefix = "someProperties")@Datapublic class SomeProperties { private String someKey1; private long someKey2; //.. ..
swagger ui에서 api를 테스트하면서 인증을 사용하고 싶은 경우 어떻게 하면 될까?swagger는 이와 관련하여 securityScheme를 제공한다.@SecurityScheme annotation을 사용하거나 OpenAPI 설정의 securityScheme 항목을 설정하면 된다.springdoc 문서에는 OpenAPI 설정에 대한 예시가 있다.https://springdoc.org/#how-can-i-define-securityschemeSecuritySchema 설정하기 @Bean public OpenAPI customOpenAPI(@Value("${springdoc.version}") String appVersion) { return new OpenAPI() .components(new..
Nexus 3.71.0 버전 이후 OrientDB 지원 중단kubernetes pod에 띄워 잘 사용하던 nexus가 어느 날부터 뜨지 않는다.로그를 살펴보니 다음과 같이 안내되어 있다.-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------This instance is using a legacy Orient database.You must migrate to H2 or PostgreSQL before upgrading to this version. Se..
JDK의 버전별 변경 사항은 여기를 참고하세요SpecJava SE 23 Platform JSR 398 에 정의된 바와 같이 JSR 398 구현이 목표실제 Spec은 Final Release Specification 문서를 참고Final Release Specification Feature Summary전체 JEP Feature 목록은 OpenJDK의 JDK 23 문서 에서 확인할 수 있다.JEPComponentFeatureJEP 455specification / languagePrimitive Types in Patterns, instanceof, and switch (Preview)JEP 466core-libs / java.lang.classfileClass-File API (Second Preview..
spring-boot-properties-migrator 소개Spring Boot 기반 프로젝트에서 버전 변경 시 property가 변경되는 경우가 있다.spring-boot-properties-migrator depnedency를 추가하면 application 실행 시 변경된 property가 어떤 것인지 쉽게 확인할 수 있다.log로 대략 다음과 같이 안내해 준다.The use of configuration keys that have been renamed was found in the environment:Property source 'configserver:class path resource [xxxx.properties]': Key: spring.http.encoding.charset ..