-
Spring Boot 1.5카테고리 없음 2023. 4. 22. 14:39오늘은 대략 2주전에 릴리즈 되었던 Spring boot 1.5의 변화에 대해서 알아보도록 하자! 필자도 회사 프로젝트를 1.5 로 업그레이드 했다. 아직 개발 단계라서 많은 영향이 없을 것으로 판단해서 올린 후 테스트를 해봤는데 잘 동작했다. 물론 개발단계라서 쉽게 올렸지만 만약 릴리즈된 상태였다면 쉽게 올리지 못했을 듯 하다. 올릴 때 별다른 문제는 없었는데 두가지 때문에 코드를 조금 수정하였다. 첫 번째는
@ConfigurationProperties
어노테이션의locations()
속성이 삭제되면서 해당 속성을 사용하지 않고 다른 방식으로 작성하고, 또 다른 하나는 테스트 때문에 작성해둔HibernateJpaAutoConfiguration
클래스를 상속하던 클래스가 있었는데 생성자의 속성이 추가 되면서 코드를 수정하였다. 단지 테스트를 위해서 만든 클래스였으므로 배포시점에는 삭제 될 클래스이므로 크게 신경 쓰지 않았다.
위는 1.4 에 존재했던public HibernateJpaAutoConfiguration(DataSource dataSource, JpaProperties jpaProperties, ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) { super(dataSource, jpaProperties, jtaTransactionManagerProvider); }
HibernateJpaAutoConfiguration
클래스의 생성자 이고 아래는 1.5 부터 바뀐 생성자이다.
아무튼 아직까지는 별 다른 문제가 없어서 일단은 계속 개발하고 있다. 아마 다 알아보진 않을 테고 많이 사용될 만한 것 또는 필자가 자주 사용할만한 것을 알아볼 예정이며, 필자가 잘 사용하지 않아 뭔말이지 모르는 것은 제외시켰다. ㅎㅎㅎpublic HibernateJpaAutoConfiguration(DataSource dataSource, JpaProperties jpaProperties, ObjectProvider<JtaTransactionManager> jtaTransactionManager, ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) { super(dataSource, jpaProperties, jtaTransactionManager, transactionManagerCustomizers); }
Deprecations from Spring Boot 1.4
Spring boot 1.4에서 Deprecated 되었던 클래스, 메서드, 속성들이 제거 되었다. 1.4 에서 1.5 올릴 때 해당 클래스, 메서드, 속성을 호출하는지 잘 확인해야 된다. 특히 자주 사용될만한HornetQ
및Velocity
지원은 제거 되었다. 제거 될 속성은 여기 맨 아래 보면 제거 대상들이 작성되어 있으니 참고하길 바란다.Renamed starters
원래 최초에는 2.0 에서 제거 될 예정이였는데 갑자기(?) 변경되었다. 아래 두개의starter
들은 1.5 부터 제거 되고 새로운 이름으로 디펜더시를 받으면 된다.spring-boot-starter-ws
→spring-boot-starter-web-services
spring-boot-starter-redis
→spring-boot-starter-data-redis
@ConfigurationProperties validation
@ConfigurationProperties
클래스에 jsr-303 어노테이션을 사용할 경우@Validated
어노테이션을 작성해야 된다. 현재는 사용하지 않아도 유효성검사가 잘 동작하지만 경고 로그가 출력될 것이다. 앞으로는(?)@Validated
어노테이션이 없는 클래스는 유효성 검사가 동작하지 않을 것이다. 앞으로 언제.. 필자가 2.0 스냅샷으로 테스트 해봤는데 유효성검사 잘 하는 거 같은데.. 일단 뭐 그렇다고 하니..Spring Session store
이전에는 특별한 설정없이 redis와 session을 디펜더시 받았다면 redis는 자동으로 세션에 저장되는데 사용되었지만 이제는store-type
을 다음과 같이 명시적으로 지정해줘야 한다.spring.session.store-type=redis
Actuator security
Spring security를 적용하지 않더라도Actuator
는 기본적으로 보안처리가 되어 있다. 하지만 만약 기존과 동일하게 해당 엔드포인트의 대한 권한을 오픈하고 싶다면management.security.enabled=false
로 설정을 해주면 된다. 또 한 해당 엔드포인트의 권한이ADMIN
에서ACTUATOR
변경 되었다. 만약 기존과 동일하게 설정 하고 싶다면management.security.roles=ADMIN
으로 설정 하면 된다.InMemoryMetricRepository
InMemoryMetricRepository
는 이제 더 이상MultiMetricRepository
를 구현 하지 않는다. 새로운InMemoryMultiMetricRepository
이MultiMetricRepository
를 구현하고 있다.@IntegrationComponentScan
Spring integration 을 사용할 경우에@IntegrationComponentScan
은 자동으로 설정이 된다. 그러므로 해당 어노테이션은 삭제해도 된다. 삭제하는게 권장하는 사항이다.ApplicationStartedEvent
ApplicationStartedEvent
클래스를 사용하는 경우에는ApplicationStartingEvent
클래스로 변경해야 된다. 현재 1.5 에서는ApplicationStartedEvent
클래스가ApplicationStartingEvent
클래스를 상속받고 있지만Deprecated
처리 되어 있다.Spring Integration Starter
spring-boot-starter-integration
는 더 이상spring-integration-jmx
를 디펜더시 받지 않는다. 만약 spring integration jmx 의 지원이 필요 하다면spring-integration-jmx
를 디펜더시 받아야 한다.Gradle 1.x
Spring boot gradle 플로그인은 Gradle 1.x 및 Gradle 2.x 초기 버전을 지원하지 않는다.Gradle 2.9
이상의 버전만 지원하니 잘 확인하기를 권장한다.Remote CRaSH shell
Spring boot shell 을 사용하기 위해 spring boot는CRaSH
라이브러리를 사용하는데 해당 프로젝트는 유지보수가 잘 되지 않는 관계로 ssh 지원을 중단하고 결정하였다. 아마도 Spring boot 2.0에서는 완전히 제거될 예정이다.Third-party library upgrades
많은 Third-party library 업그레이드 되었다. 그 중에 Spring Data Ingalls, Jetty 9.4, JooQ 3.9, AssertJ 2.6.0, Hikari 2.5, Neo4J 2.1 등이 있고 플러그인 또한 업그레이드 되었다.Apache Kafka support
spring boot 1.5는 spring-kafka 프로젝트를 자동설정을 지원 한다. kafka를 사용하려면spring-kafka
를 디펜더시 받고spring.kafka.*
속성들을 사용하면 된다.
위 처럼 간단하게 카프카의 메세지를 받을 수 있다.@Component public class MyBean { @KafkaListener(topics = "someTopic") public void processMessage(String content) { // ... } }
Transaction manager properties
spring.transaction.*
속성을 사용하여 자동설정된PlatformTransactionManager
클래스를 좀 더 다양하게 구성할 수 있다.
현재는 위의 두가지 속성만 지원하고 있다.spring.transaction.rollback-on-commit-failure=... spring.transaction.default-timeout=...
JmxEndpoint interface
새롭게JmxEndpoint
인터페이스가 도입되었다. JMX 통해 노출되는 엔드포인트를 개발할 수 있다.MvcEndpoint
인터페이스가 유사하니 참고하면 되겠다.Testing updates
이제는Test
를 작성할 때 자동설정을 제외시킬 수 있다. 기존의@Test..
어노테이션에도excludeAutoConfiguration
속성이 추가 되었으니 제외 시킬 자동 설정을 작성하면 된다. 또 는@ImportAutoConfiguration
어노테이션의(exclude=...
속성을 사용하여 직접 테스트에 추가 할 수 있다.@JdbcTest
,@DataMongoTest
,@JsonTest
,@DataJpaTest
,@RestClientTest
어노텡이션에서 확인 할 수 있다.@JdbcTest
테스트는 이번 1.5부터 새롭게 추가된 테스트이다.JmsTemplate customizations
spring.jms.template.*
속성들을 사용해서 자동 설정된JmsTemplate
을 커스터마이징 할 수 있다.Deprecations in Spring Boot 1.5
TomcatEmbeddedServletContainerFactory.setTldSkip
메서드가 deprecated 되었고setTldSkipPatterns
메서드가 사용된다.ApplicationStartedEvent
가ApplicationStartingEvent
로 변경LogFile
의LOG_FILE
,LOG_PATH
이LoggingApplicationListener
클래스의 상수로 변경구아바는 Spring 5에 삭제 될 예정이므로 Guava 캐싱은 더이상 사용되지 않을 것이다. 만약 구아바 캐시을 사용한다면 카페인 캐시로 업그레이드 하는 것이 좋다.
CRaSH
유지보수가 안되는 관계로 추후에 삭제JmxEndpoint
인터페이스가 추가되어EndpointMBeanExporter
클래스의 다수의protected
메서드가 deprecated 처리SearchStrategy.PARENTS 가 SearchStrategy.ANCESTORS 변경 되었다.
SearchStrategy.PARENTS
는 deprecated 처리Apache DBCP가 Deprecated 되었다.
DBCP2
를 권장한다.server.undertow.buffers-per-region
속성은 더이상 사용되지 않으므로 deprecated 처리org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestDatabase
deprecated 처리 되었고org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase
이동하였다.
Property Renames
server.max-http-post-size
deprecated 처리 되었고 해당 서버의 따라 지정 예)server.tomcat.max-http-post-size=..
spring.data.neo4j.session.scope
속성 제거!
오늘은 이렇게 Spring boot 1.5의 대해서 살펴봤다. 1.4 보다는 많은 변화가 없었다. 아마도 2.0에 투자를 더 많이 하는 듯 보인다. 2.0은 아마도 올해 말이나 내년초에 나올지 않나 싶다. 당분간은 1.x 로 개발을... 필자 또 한 새롭게 사용할 만한 것은 kafka가 정도 될 것 같다. 그 외에는 필자가 자주 사용할만한 것은 없는 것 같다. 이상으로 spring boot 1.5에 대해서 알아봤다!