개발/Spring 29

[Spring] Spring Boot 버전별 차이점

Spring Boot 버전 별 차이점 (2.2 ~ 3.0) + Spring Cloud 1. 개요 최근 사내에서 Spring Boot 버전을 올리면 어떨까 해서 Spring Boot 버전 및 Spring Cloud 버전 차이점에 대해서 간단하게 알아보고 있다. 프로젝트마다 Spring Boot 사용하는 버전은 각각 다른데, 그러다 보니 가끔 코드를 이쪽저쪽 주워 가다 보면 다른 점들이 있어서 변경해서 사용하곤 했다. 구체적으로 어떤 차이점이 있는지 한번 알아보고 상위 버전으로 마이그레이션을 한다면 어떤 것들을 주의해야 하는지도 알아보자. 일단 사내에서 사용중인 제일 낮은 Spring Boot 버전은 2.1.X 버전 대라 해당 버전 이후 버전들을 확인했다. 2. Spring Boot와 Spring Frame..

개발/Spring 2022.10.22

[Spring] Spring Boot v2.7

Spring Boot v2.7 Spring Boot 2.7 Release Notes · spring-projects/spring-boot Wiki 1. spring.mongodb.embedded.features 구성 속성이 제거됨 Embedded Mongo 3.4는 Mongo 기능 구성에 대한 지원을 중단함. 이에spring.mongodb.embedded.features 구성 속성이 제거되었음. Mongo를 시작하는 데 사용되는 명령줄을 변경하기 위해 기능이 지정되는 고급 구성의 경우 사용자 지정 MongodConfig 빈을 대신 제공해야 함. 2. MongoDB 속성 우선 순위 이전에는 spring.data.mongodb.uri가 spring.data.mongodb.host 및 spring.data.m..

개발/Spring 2022.10.18

[Spring] Spring Boot v2.6

Spring Boot 2.6 Release Notes · spring-projects/spring-boot Wiki 1. Spring Boot 2.4로부터 Deprecation 된 사항 Spring Boot 2.4에서 더 이상 사용되지 않는 클래스, 메서드 및 속성이 이번 릴리스에서 제거됨. 업그레이드하기 전에 더 이상 사용되지 않는 메서드를 호출하지 않는지 확인 2. 기본적으로 금지된 순환참조 이제 기본적으로 빈 간의 순환 참조가 금지됨. BeanCurrentlyInCreationException으로 인해 애플리케이션이 시작되지 않으면 종속성 주기를 중단하도록 구성을 업데이트하는 것이 좋다. 만약 순환 참조 해결이 어렵다면 spring.main.allow-circular-references를 true로..

개발/Spring 2022.10.17

[Spring] Spring Boot v2.4

Spring Boot v2.4 Spring Boot 2.4 Release Notes · spring-projects/spring-boot Wiki 1. Spring Boot 버전 관리 체계 변경 2.4부터 Spring Boot는 새로운 Spring 버전 관리 체계를 채택 2.3.5.RELEASE→ 2.4.0 2. Junit5 vintage engine 제거 Spring Boot 2.4 업데이트 이후 Junit 클래스 테스트 컴파일 오류로 표시되는 org.junit.Test는 spring-boot-starter-test의 Junit5의 빈티지 엔진이 제거되었기 때문일 수 있음. Junit5로 마이그레이션 없이 계속 Junit4를 사용하려면 gradle의 경우 아래 종속성을 추가한다. testImplemen..

개발/Spring 2022.10.15

[Spring] Spring Boot v2.3

Spring Boot 2.3 Release Notes · spring-projects/spring-boot Wiki Spring Boot 2.2에서 업그레이드된 내용 Gradle 6.3 이상 지원 (5.6.x는 지원은 하지만 deprecated 됨.) 1. Validation Starter가 WebStarter에 더 이상 포함되지 않는다. webstart에서 빠졌기 때문에 별도로 gradle에 써주어야 함. dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-validation' } 2. 기본적으로 고유한 DataSource 이름을 사용해야 한다. 기본적으로 DataSource 이름이 자동 구성될 때를 위해 고유한..

개발/Spring 2022.10.14

[Spring] Spring Boot v2.2

Spring Boot v2.2 Spring Boot 2.2 Release Notes · spring-projects/spring-boot Wiki Spring Boot 2.1에서 업그레이드된 내용 1. Spring Boot 2.1의 Deprecated 건 삭제 2.1에서 deprecated된 사용되지 않는 클래스, 메서드 및 속성이 이번 릴리즈에서 제거되었으므로 확인 2. Spring Framework 5.2 이번 릴리즈에서 Spring Framework 5.2로 업그레이드됨. 자세한 문서는 아래 참고. Spring Framework’s upgrade documentation 3. JMX는 기본적으로 비활성화 이번 버전부터 jmx는 기본적으로 비활성화됨. 필요시 spring.jmx.enabled=true..

개발/Spring 2022.10.13

[Spring] Spring Framework 6.0과 Spring Boot 3.0 Preview

Spring Framework 6.0과 Spring Boot 3.0 Preview Spring Framework 6.0과 Spring Boot 3.0 2022년 11월 정도에는 Spring Framework 6.0, Spring Boot 3.0 출시 예정이다. 간단하게만 미리 살펴본다면 큰 기능은 아래와 같다. Spring Framework 6.0 Java 17 based on XML 구성 형식은 지원이 안될 수 있음 (점차 Spring에서 제거) 일부 Java EE API 지원 종료 RPC 지원 종료 새로운 AOT 엔진 도입 Jakarta EE 9+로의 마이그레이션으로 인한 변경 Cloud Native Spring Boot 3.0 Spring Boot 3.0은 Spring Framework 6.0을 기..

개발/Spring 2022.10.12

Spring 트랜잭션 처리

Spring 트랜잭션 처리 보통 스프링에서 트랜잭션 처리를 할 때 @Transactional 어노테이션을 이용하여 스프링에서 제공하는 선언적 트랜잭션을 이용했다. 그런데 메서드 단위가 아니라 메서드 내의 특정 구간만 트랜잭션 처리를 해야하는 경우 어떻게 할 수 있을까? 그리고 우리가 사용하던 @Transactional 어노테이션을 이용해서 스프링에서는 어떤식으로 트랜잭션 기능을 처리할 수 있었을까? 기존에 JDBC로 개발을 할 때는 직접 JDBC 연결을 맺고, commit과 rollback을 호출하여 처리했는데 Spring에서는 직접 개발자들이 트랜잭션 처리를 하지 않아도 되도록 추상화해서 제공하고 있다. 스프링 프레임워크 트랜잭션 추상화 1. 선언적 트랜잭션 방식 @Transactional 클래스, 메..

개발/Spring 2021.04.18

[Spring] DispatcherServlet 코드 분석하기

Spring DispatcherServlet 코드 분석하기 이번 포스팅에서는 Spring Framework의 DispatcherServlet 코드를 분석한 내용에 대해 정리해보려 합니다. DispatcherServlet 이란? Spring Framework의 구조와 Dispatcher Servlet의 역할을 간단히 설명하자면 아래와 같은 순서대로 사용자의 요청을 처리합니다. 1. 사용자의 Request가 들어오면 DispatcherServlet은 받아온 Request를 확인합니다. 2. DispatcherServlet은 HandlerMapping에게 보내서 해당 요청을 처리할 수 있는 Controller가 있는지 확인합니다. 3. HandlerAdapter에서는 HandlerMapping에서 확인한 Co..

개발/Spring 2021.01.01

[Spring] LogBack 설정

Spring LogBack 설정하기 이번 포스팅에서는 LogBack은 무엇인지, 그리고 어떤 설정을 할 수 있는지 자세하게 알아보려 합니다. Logback이란? LogBack은 가장 많이 사용되고 있는 로깅 프레임워크 중 하나입니다. Logback은 이전에 많이 사용되고 있던 Log4j의 대안책으로 나온 slf4j와 그 구현체인데, slf4j는 패시드(Facade)패턴으로 구현체의 종류와 상관없이 일관된 로깅 코드를 작성할 수 있기 때문에 범용적입니다. LogBack의 구성요소로는 Logger, Appender, Encoder 3가지가 있으며 다음과 같은 역할을 합니다. Logger: 실제 로깅을 수행한다. Level 속성으로 출력할 로그의 레벨을 정한다. Appender: 로그 메세지가 출력될 대상을 ..

개발/Spring 2020.12.31