본문으로 바로가기

[Spring] 스프링 부트 업데이트 - 1

category Spring 2021. 7. 20. 17:00

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8

 

스프링 부트 업데이트 - 인프런 | 강의

이 강의는 "스프링 부트 개념과 활용" 강의 확장팩으로 지난 2년간 있었던 스프링 부트 업데이트를 다루고 있습니다. 스프링 부트 2.1부터 2.4까지의 새로운 기능 및 변경 내역을 확인하시고 스프

www.inflearn.com

 

ㅇ 스프링 부트 2.1

ㅁ 의존성 변경

- 스프링 프레임워크 5.0 -> 스프링 프레임워크 5.1

- 로거 설정 개선

- JUnit 4.12 => JUnit 5.2

- 톰캣 8.5.39 -> 톰캣 9

  > Blocking IO 가 사라지고 Non-blocking IO 가 기본으로 사용

    * 공부해야함

 - 하이버네이트 5.2 -> 하이버네이트 5.3

  > JPA 2.1 -> JPA 2.2 지원

    >> JAVA 8 의 DATE, TIME API 매핑 가능

 

ㅁ Spring-JCL ( Jakarta Commons Logging )

- 로깅 퍼사드는 로거를 골라서 쓰는 것

 > 스프링은 로깅 퍼사드를 사용하여, 로거를 선택할 수 있게 해줌

- JCL은 레거시, SLF4J를 사용한다. ( 로깅 퍼사드)

  > logback or Log4j 2를 사용 ( 로거 )

- JCL용 브릿지를 만들어서, 결국 모두 SLF4J를 쓰게한다.

- spring-boot-web 디펜던시에 자동으로 브릿지가 들어가있다.

 

ㅁ 빈 오버라이딩 기본 설정 변경

- Bean은 내가 정의하여 componentScan으로 등록하거나, AutoConfiguration에 의해 등록될 수 있는데,

 기존에는 AutoConfiguration이 overriding 하였으나, 스프링 부트 2.1 부터는 재정의 하지 못하게 구성됨

spring.main.allow-bean-definition-overriding=true  으로 허용할 수도 있음

- @ConditionalOnMissingBean 등으로 조건은 가능

 

ㅁ 자동 설정 지원 - 2.1 부터 지원

- @EnableAsync 는 Async 기능을 키는 것이고, @Async 가 붙은 메소드를 수행할수있게한다.

   여기서는 TaskExecutionAutoConfiguration 이 적용되어진다.

- @EnableSchduling은 스케줄링 작업을 하게 하는것이고, TaskSchedulingAutoConfiguration이 적용된다.

 => application.properties에서 설정값 변경 가능

- spring-boot-stater-jdbc 의 자동설정도 지원

 -> spring jdbc와 mybatis 연동하여 쓰는것도 좋은 방법

 

ㅁ 프로퍼티 변경 & 프로퍼티 마이그레이션

- jpa의 repository의 등록 관련 설정

  > default : 어플리케이션 구동시 proxy로 객체 참조값을 생성하고 인스턴스를 주입

     defferd :  어플리케이션 구동시 proxy로  객체 참조값을 생성하나, 구동 이후 인스턴스를 주입  (충분 )

     lazy : 어플리케이션 구동시 proxy로  객체 참조값을 생성하나, 실제 repository 사용 요청이 올때, 객체를 생성

 => 굳이 할 필요는 없다

- server.servlet.path 는 2.0.9에는 적용되었으나, 2.1 버전에서는 구동은 되나 무시함

 > 마이그레이션 툴을 쓰면 고쳐야될게 콘솔에 나옴

 

ㅁ JUnit 5

- @RunWith(SpringRunner.class) 안 씀

  > SpringRunner는 Runner의 구현체로 컨텍스트들을 전부 불러와서, 빈들을 등록해줌

  > JUnit 5 부터는 extendwith 로 구현할 수 있으나. @SpringBootTest에 포함되어 있음

- 꼼수, mockMvc.perform(get()) 요청이 필요할때, mockMvc.perform(post()) 로 import 하고, import의 post를 * 로 바꿈

- 람다식을 지원함

 > assertAll 및 람다식 을 통해 모든 assert를 실행해볼 수 있다.

 

ㅁ DataSize

- 데이터 사이즈를 표현하는 방법

- 스프링 프레임워크 5.1 부터 지원하는 내용

- StringToDataSizeConverter, NumberToDataSizeConverter 등의 컨버터 지원

- MB, GB, KB, TB, B 등을 지원

 

ㅁ 로그 그룹

- 로그 그룹 정의하는 방법

  • ●  logging.group.{그룹 이름}={패키지}, {패키지}, {패키지}, ...
  • ●  logging.level.{그룹 이름}={로그 레벨}

- 로그는 성능에 영향을 주기때문에 debug는 권장하지 않음

 

ㅁ Actuator 관련 변경

- 2.1 이전에는 스프링 시큐리티를 쓰면 모든 endpoint를 로그인해야함

 > spring actuator 포함

- 2.1 이후에는 spring actuator의 endpoint (info , health 등은 허용 )