-
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-servicesspring-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=redisActuator 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.AutoConfigureTestDatabasedeprecated 처리 되었고org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase이동하였다.
Property Renames
server.max-http-post-sizedeprecated 처리 되었고 해당 서버의 따라 지정 예)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에 대해서 알아봤다!