Spring Boot 2.0 출시

사용자 삽입 이미지

스프링 부트 2.0이 출시되었습니다.

가장 큰 변화는 Java 8을 최소 조건으로 요구하며 Java 9 지원을 확대하는것과
Spring 5.0의 새로운 기능을 사용할 수 있고
reactive 방식의 개발을 지향한다는 점입니다.

Spring 1.5를 2.0으로 마이그레이션 하기위한 가이드 문서는 이쪽( https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide )입니다.

저는 개인적으로 reactive 방식의 개발을 지원하는것에 관심이 있습니다.
스트림 프로세싱, non-blocking, 함수형(불변상태) 코드 작성이 주목을 받으며, 자바 진영도 RxJAVA 등을 통해 언어, 프레임웍 수준에서 리엑티브 방식의 구현을 위한 노력이 있어왔고 java 9는 RxJAVA 스타일의 리액티브 개발 언어가 될것이라고 한 흐름에서의 변화이기 때문입니다.

이를 위해 Spring에서는 다음 영역에 리엑티브를 지원합니다.
Spring WebFlux ( https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html) 
Reactive Spring Data ( 카산드라, 몽고DB, 레디스, 카우치베이스 등의  NoSQL 류에 리엑티브 API 지원 )
Reactive Spring Security ( https://docs.spring.io/spring-security/site/docs/5.0.0.RELEASE/reference/htmlsingle/#jc-webflux )

상기와 같은 변화에 따라 WebFlux 와 같이 기존 Servlet 구현체로는 대응을 할 수 없는 부분은 Embedded Netty Server 를 리엑티브 서버로 사용하며 Blocking servlet API는 제공되지 않습니다.

이외에도 3rd-party 라이브러리 업데이트 ( tomcat 8.5 , flyway 5, hibernate 5.2, thymeleaf 3 ), http/2 지원, 어플리케이션 모니터링에 자체 metric 대신 micrometer ( micrometer.io ) 적용, 기본 database pool로 HikariCP 적용 등의 변화가 있습니다.



2018/03/05 14:59 2018/03/05 14:59
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Spring Framework 5.0

2017년 이후를 겨냥한 다음 세대 Spring 프레임워크 소식이 들립니다.
프레임워크의 전체 코드를 java 8 기반( lambda , stream api , nio2 등..)으로 작성.
JDK 9 포괄적 지원과 HTTP/2에 집중하며 Spring-style의 reactive 아키텍처를 목표로 개발 진행 중.
5.0 milestone 1 : 2016년 중순
5.0 RC1 : 2016년 12월
최소 사양
JDK 8+, Servlet 3.0+, JMS 2.0+, JPA 2.1+, JUnit 5
주요 기반
JDK 9 과 Jigsaw ( 모듈러 java를 구현하기 위한 java key feature )
Servlet 4.0 과 HTTP/2
Reactive 아키텍처

2016/04/07 14:57 2016/04/07 14:57
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Spring3 에서 Spring4 - servlet 3.0 으로 웹어플리케이션 마이그레이션하기

기존 Spring3 기반으로 개발한 웹어플리케이션을 Servlet 3.0 , Spring 4 버전으로 마이그레이션 하는 순서는 다음과 같다.
Spring 4의 변경 신기능 소개.

1. 메이븐 형식의 프로젝트라면 POM 파일에 서블릿 3.0 스펙의 API를 사용할 수 있도록 servlet-api.jar dependancy를 업데이트
[code xml]<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope> <!-- 런타임시에는 서블릿 컨테이너에의해 제공되므로 provided로 설정 -->
</dependency>
[/code]

2. web.xml namespaces,xsd files 과 version 업데이트
[code xml]<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
[/code]

3. Spring Framework 의 라이브러리 jar 들을 버전 4로 업데이트

4. 스프링 Context 설정 파일의 스키마 로케이션 정보 업데이트. 다음과 유사하게 xsi:schemaLocation 의 스키마 버전 정보를 4.0으로 변경.
[code xml]<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:task="http://www.springframework.org/schema/task"
  xmlns:util="http://www.springframework.org/schema/util"
  xmlns:cache="http://www.springframework.org/schema/cache"
  xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
    http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">[/code]

5. Jackson 라이브러리 업데이트. 버전 1.x 의 jackson 라이브러리를 사용하고 있었다면 2점대로 변경. 이는 스프링 라이브러리에 의해 사용된다.
[code]<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.3.0</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.3.0</version>
</dependency>
[/code]

6. view resolver 쪽에 jackson 매핑이 1.x 대응이라면 2.x 대응으로 변경.
1.x jackson mapper 설정이 다음과 같다면..
[code xml] <bean id="jsonMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="objectMapper" ref="jsonMapper" />
</bean> [/code]
다음과 같이 MappingJackson2JsonView 로 변경 필요.
[code xml]<!-- Spring3 이상, jackson 라이브러리 2 이상일 때는 MappingJackson2JsonView 로 설정. -->
<bean id="jsonMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="objectMapper" ref="jsonMapper" />
</bean>
[/code]
2014/05/28 10:14 2014/05/28 10:14
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Spring Framework 4.0 안내

스프링 프레임워크가 3.0이 출시되고 4.0으로 버전업 하기까지 4년 가까운 시간이 흘렀습니다. 스프링 프레임워크의 프로젝트 리더인 Juergen Hoeller는 그의 블로그를 통해 첫번째 마일스톤이 완성되었음을 알렸습니다.
첫번째 마일스톤의 결과물의 다운로드 링크는 아직 제공하지 않았습니다. 
스프링 4.0의 테마는 Java SE8(아마도 Open JDK 8 build 88 이후 버전을 base로 작업하고 있는듯) 과 Java EE 7의 지원과 몇가지 사용성 기능 추가로 보입니다.

Juergen는 JAVA SE 8에 대한 지원이 개발되고 있으며 JDK 8 developer preview의 출시에 맞춰 2013년 9월경에는 release candidate 출시를 예상하고있습니다. 올 9월에있을 SpringOne에서 소개할 예정입니다.

다음과 같은 Java se 8의 기능이 지원됩니다
JSR-335 Lambda expressions.
JSR-310 Date-Time value types for Spring data binding and formatting.
Support for the new 1.8 byte code format (람다 표현식 지원을 위해 필요).

다음 JEE 7 기능 지원도 포함됩니다.
JSR-343 JMS 2.0.
JSR-338 JPA 2.1.
JSR-349 Bean Validation 1.1.
JSR-236 Java EE 7 Enterprise Concurrency support.
JSR-356 Spring's WebSocket endpoint mode.


http://www.infoq.com/news/2013/06/Spring_Framework_4.0_Announced

2013/07/08 13:03 2013/07/08 13:03
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다