SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
© Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0
Jay Lee(jaylee@pivotal.io)
Younjin Jeong(yjeong@pivotal.io)
November 2017
Spring 5 New Features
https://spring.io/blog/2016/09/22/new-in-spring-5-functional-web-framework
https://content.pivotal.io/white-papers/speed-thrills-how-to-harness-the-power-of-ci-cd-for-your-development-team
Discount Code: S1P200_Jeong
https://pivotal.io/training/courses
http://engineering.pivotal.io/
https://spring.io/blog/
https://repo.spring.io/webapp/#/home
JDK 9, HTTP/2, Reactive
https://docs.spring.io/spring/docs/current/spring-framework-reference/
Spring 5 Major Changes
! Java 9 Compatible
! JavaEE8 Support
! HTTP/2 Support
! Reactive: WebFlux, Router Functions
! Functional Bean Configuration
! JUnit 5
! Portlet Deprecated
Baseline Changes
Version Upgrades introduced in Spring 5
!JDK 8+
!Servlet 3.1+
!JMS 2.0
!JPA 2.1
!JavaEE7+
Baseline Changes – Java9 Jigsaw
SPR-13501: Declare Spring modules with JDK 9 module metadata
is still Open
Manifest-Version: 1.0
Implementation-Title: spring-core
Automatic-Module-Name: spring.core
Implementation-Version: 5.0.2.BUILD-SNAPSHOT
Created-By: 1.8.0_144 (Oracle Corporation)
JavaEE 8 GA – Sep 21, 2017
! CDI 2.0 (JSR 365)
! JSON-B 1.0 (JSR 367)
! Servlet 4.0 (JSR 369)
! JAX-RS 2.1 (JSR 370)
! JSF 2.3 (JSR 372)
! JSON-P 1.1 (JSR 374)
! Security 1.0 (JSR 375)
! Bean Validation 2.0 (JSR 380)
! JPA 2.2 - Maintenance Release
Java API for JSON Binding (JSON-B) 1.0 – JSR 367
Standard Binding Layer for converting Java objects to/from JSON
! Thread Safe
! Apache Johnzon
! Eclipse Yasson
Java API for JSON Binding (JSON-B) 1.0 – JSR 367
Person person = new Person();

person.name = ”Jay Lee";

person.age = 1;

person.email = “jaylee@pivotal.io”;



Jsonb jsonb = JsonbBuilder.create();

String JsonToString = jsonb.toJson(person);



System.out.println(JsonToString );



person = jsonb.fromJson("{"name":”Jay Lee","age":1,”email":”jaylee@pivotal.io"}",
Person.class);
Java API for JSON Binding (JSON-B) 1.0 – JSR 367
<dependency>

<groupId>org.apache.geronimo.specs</groupId>

<artifactId>geronimo-json_1.1_spec</artifactId>

<version>1.0</version>

</dependency>

<dependency>

<groupId>org.apache.johnzon</groupId>

<artifactId>johnzon-jsonb</artifactId>

<version>1.1.5</version>

</dependency>
Java API for JSON Binding (JSON-B) 1.0 – JSR 367
<dependency>

<groupId>org.glassfish</groupId>

<artifactId>javax.json</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>org.eclipse</groupId>

<artifactId>yasson</artifactId>

<version>1.0.1</version>

</dependency>
Java API for JSON Binding (JSON-B) 1.0 – JSR 367
New HttpMessageConverter for JSON-B in Spring5
@Bean

public HttpMessageConverters customConverters() {

Collection<HttpMessageConverter<?>> messageConverters = new ArrayList<>();

JsonbHttpMessageConverter jsonbHttpMessageConverter = new JsonbHttpMessageConverter();

messageConverters.add(jsonbHttpMessageConverter);



return new HttpMessageConverters(true, messageConverters);

}
Servlet 4.0 – Server Push
Server pushes resources to Clients, efficient way to transfer
resources using HTTP/2
@GetMapping("/pushbuilder")

public String getPage(PushBuilder builder) {

builder.path("/scripts.js").push();

builder.path("/styles.css").push();



return "index";

}
Servlet 4.0 – HttpServletMapping
Provide Runtime Discovery of URL Mappings
@GetMapping("/servlet4")

public void index(final HttpServletRequest request) {

HttpServletMapping mapping = request.getHttpServletMapping();


System.out.println(mapping.getServletName());

System.out.println(mapping.getPattern());

System.out.println(mapping.getMappingMatch().name());

System.out.println(mapping.getMatchValue());

}
Bean Validation 2.0 – JSR 380
1.1 was introduced in 2013, lacking of supports for new Java8, 9.
! New JDK Types Including LocalTime, Optional and etc
! Lambda
! Type Annotation
! @Email, @Positive, @PositiveOrZero, @Negative, @NegativeOrZero,
@PastOrPresent, @FutureOrPresent, @NotEmpty, and @NotBlank.
Spring 5 Major Changes
! Logging Enhancement
! Performance Enhancement
! Functional Bean Configuration
! JSR 305
! Spring MVC - HTTP/2 Support,
! Reactive: WebFlux, Router Functions
! JUnit 5
Spring 5 – XML Configuration Changes
Streamlined to use unversioned Schema
Spring 5 - Logging Enhancement
spring-jcl replaces Commons Logging by default
! Autodetecting Log4j 2.x, SLF4J, and JUL (java.util.logging) by
Class Loading
Spring 5 - Logging Enhancement
Spring 5 - Component Scanning Enhancement
Component scanning time reduced by index, improving Start Up Time
• META-INF/spring.components is created at Compile Time
• @Indexed Annotation
• org.springframework.context.index.CandidateComponentsIndex
• -Dspring.index.ignore=true to fall back to old mechanism
@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface Component {

String value() default "";

}
@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Indexed

public @interface Component {

String value() default "";

}
Spring 5 - Component Scanning Enhancement
<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context-indexer</artifactId>

<optional>true</optional>

</dependency>
Spring 5 - Component Scanning Enhancement
• JMH Result, ClassPath Scanning versus Index Scanning
• Noticeable Differences in having more classes
https://github.com/snicoll-scratches/test-spring-components-index
Spring 5 - Functional Bean Configuration
Support for Functional Bean Registration in
GenericApplicationContext, AnnotationConfigApplicationContext
! Very efficient, no reflection, no CGLIB proxies involved
! Lambda with Supplier act as a FactoryBean
Spring 5 - Functional Bean Configuration
@Autowired

GenericApplicationContext ctx;



@Test

public void functionalBeanTest() {

ctx.registerBean(Person.class, () -> new Person());

ctx.registerBean("personService", Person.class,

() -> new Person(), bd -> bd.setAutowireCandidate(false));

ctx.registerBean(”carService", Car.class,

() -> new Car(), bd -> bd.setScope(BeanDefinition.SCOPE_PROTOTYPE));

}
Spring 5 – JSR 305
SPR-15540 Introduce null-safety of Spring Framework API
• Becomes Kotlin Friendly (-Xjsr305=strict as of 1.1.51)
https://github.com/spring-projects/spring-framework/commit/f813712f5b413b354560cd7cc006352e9defa9a3
Spring 5 – JSR 305 Nullable
New Annotation org.springframework.lang.NonNull,
org.springframework.lang.Nullable leverages JSR 305
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Nonnull

@TypeQualifierNickname

public @interface NonNull {

}
Spring 5 – Spring MVC
HTTP/2 and Servlet 4.0
• PushBuilder
• WebFlux
• Support Reactor 3.1, RxJava 1.3, 2.1 as return values
• JSON BINDING API
• Jackson 2.9
• Protobuf 3.0
• URL Matching
Spring 5 – HTTP/2 Support Containers
! Tomcat 9.0
! Jetty 9.3
! Undertow 1.4
ex. Spring Boot
<dependency>

<groupId>org.apache.tomcat</groupId>

<artifactId>tomcat-juli</artifactId>

<version>9.0.1</version>

</dependency>
Spring 5 MVC – Multipart File Size
MaxUploadSizeExceededException will be thrown for multipart
size overrun
• Default Value
• Two Properties(Default Value)
• spring.servlet.multipart.max-file-size=1MB

spring.servlet.multipart.max-request-size=10MB
Spring 5 MVC – URL Matcher changed
PathPatternParser is alternative to Traditional AntPathMatcher for
URL Matching
• org.springframework.web.util.patterns.PathPattern
Examples:
/pages/t?st.html —/pages/test.html, /pages/tast.html  /pages/toast.html
/resources/*.png — matches all .png files in the resources directory
/resources/** — matches all files underneath the /resources/ path, including /resources/
image.png and /resources/css/spring.css
/resources/{*path} — matches all files underneath the /resources/ path and captures their relative
path in a variable named "path"; /resources/image.png will match with ”path" -> "/image.png", and /
resources/css/spring.css will match with ”path" -> "/css/spring.css"
/resources/{filename:w+}.dat will match /resources/spring.dat and assign the value "spring" to
the filename variable
Spring 5 MVC – Throwing Exception from Controller
ResponseStatusException is Introduced to throw Exception in
MVC
• SPR-14895:Allow HTTP status exceptions to be easily thrown from
Controllers
• ResponseEntity(HttpStatus.BAD_REQUEST)?
@GetMapping ( "/throw" )

public void getException () {

throw new ResponseStatusException( HttpStatus. BAD_REQUEST , "request invalid." ); 

}
Spring 5 WebFlux – WebClient
Reactive Web Client introduced in Spring 5, alternative to
RestTemplate
! AsyncRestTemplate is deprecated
WebClient client= WebClient.create();



Mono<Person> person=client

.get()

.uri("http://jay-person.cfapps.io/{name}",name)

.retrieve()

.bodyToMono(Person.class);
Spring 5 WebFlux –WebTestClient
@RunWith(SpringRunner.class)

@SpringBootTest

@AutoConfigureWebTestClient

public class MicrometerApplicationTests {

@Autowired

WebTestClient client;



@Test

public void testWebClient() {

client.get().uri("/person/Jay")

.exchange()

.expectBody(Person.class)

.consumeWith(result -> assertThat(result.getResponseBody().getName()).isEqualTo("Jay Lee"));

}
Spring 5 WebFlux – Server
RouterFunction is introduced for functional programming
RouterFunction<?> route = route(GET("/users"), request ->

ok().body(repository.findAll(), Person.class))

.andRoute(GET("/users/{id}"), request ->

ok().body(repository.findOne(request.pathVariable("id")), Person.class))

.andRoute(POST("/users"), request ->

ok().build(repository.save(request.bodyToMono(Person.class)).then())

);
WebFlux server (functional)
RouterFunction<?> route = route(GET("/users"), request ->
ok().body(repository.findAll(), User.class))
.andRoute(GET("/users/{id}"), request ->
ok().body(repository.findOne(request.pathVariable("id")), User.class))
.andRoute(POST("/users"), request ->
ok().build(repository.save(request.bodyToMono(User.class)).then())
);
Spring Boot and Cloud
Spring Boot 2.0 will be GA in Feb 2018
! Spring Cloud Finchley Release Train based on Spring Boot 2.0
! Spring Cloud Gateway
! Spring Cloud Function
Spring Calendar
https://spring-calendar.cfapps.io/
Spring 5 – Deprecated APIs
HTTP/2 and Servlet 4.0
• Hibernate 3, 4
• Portlet
• Velocity
• JasperReports
• XMLBeans
• JDO
• Guava
https://run.pivotal.io https://pcfdev.io
Transforming How The World Builds Software
© Copyright 2017 Pivotal Software, Inc. All rights Reserved.

Weitere ähnliche Inhalte

Was ist angesagt?

Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and FriendsYun Zhi Lin
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Building Search for Bitbucket Cloud
Building Search for Bitbucket CloudBuilding Search for Bitbucket Cloud
Building Search for Bitbucket CloudAtlassian
 
Microservices with Spring and Cloud Foundry
Microservices with Spring and Cloud FoundryMicroservices with Spring and Cloud Foundry
Microservices with Spring and Cloud FoundryAlain Sahli
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGToshiaki Maki
 
Node Summit 2016: Web App Architectures
Node Summit 2016:  Web App ArchitecturesNode Summit 2016:  Web App Architectures
Node Summit 2016: Web App ArchitecturesChris Bailey
 
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Tomohiro Ichimura
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugToshiaki Maki
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & ActuatorsVMware Tanzu
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoToshiaki Maki
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Toshiaki Maki
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tToshiaki Maki
 
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsGame of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsVMware Tanzu
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Matt Raible
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoToshiaki Maki
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07Toshiaki Maki
 
Spring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresSpring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresAliaksei Zhynhiarouski
 

Was ist angesagt? (20)

Spring boot wednesday
Spring boot wednesdaySpring boot wednesday
Spring boot wednesday
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Building Search for Bitbucket Cloud
Building Search for Bitbucket CloudBuilding Search for Bitbucket Cloud
Building Search for Bitbucket Cloud
 
Microservices with Spring and Cloud Foundry
Microservices with Spring and Cloud FoundryMicroservices with Spring and Cloud Foundry
Microservices with Spring and Cloud Foundry
 
Java 9 and Beyond
Java 9 and BeyondJava 9 and Beyond
Java 9 and Beyond
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 
Node Summit 2016: Web App Architectures
Node Summit 2016:  Web App ArchitecturesNode Summit 2016:  Web App Architectures
Node Summit 2016: Web App Architectures
 
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016Cloud Foundry Introduction for CF Meetup Tokyo March 2016
Cloud Foundry Introduction for CF Meetup Tokyo March 2016
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators
 
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyoSpring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
 
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsGame of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
 
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
 
Spring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresSpring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive features
 

Ähnlich wie Spring5 New Features - Nov, 2017

Spring5 New Features
Spring5 New FeaturesSpring5 New Features
Spring5 New FeaturesJay Lee
 
Spring 4-groovy
Spring 4-groovySpring 4-groovy
Spring 4-groovyGR8Conf
 
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...Toshiaki Maki
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Kile Niklawski
 
JavaOne 2009 - TS-5276 - RESTful Protocol Buffers
JavaOne 2009 - TS-5276 - RESTful  Protocol BuffersJavaOne 2009 - TS-5276 - RESTful  Protocol Buffers
JavaOne 2009 - TS-5276 - RESTful Protocol BuffersMatt O'Keefe
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Matt Raible
 
What’s New in Spring Batch?
What’s New in Spring Batch?What’s New in Spring Batch?
What’s New in Spring Batch?VMware Tanzu
 
Ajug - The Spring Update
Ajug - The Spring UpdateAjug - The Spring Update
Ajug - The Spring UpdateGunnar Hillert
 
What’s expected in Spring 5
What’s expected in Spring 5What’s expected in Spring 5
What’s expected in Spring 5Gal Marder
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootJosué Neis
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC frameworkMohit Gupta
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSUFYAN SATTAR
 
Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Hirofumi Iwasaki
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Pythongturnquist
 

Ähnlich wie Spring5 New Features - Nov, 2017 (20)

Spring5 New Features
Spring5 New FeaturesSpring5 New Features
Spring5 New Features
 
Spring 4-groovy
Spring 4-groovySpring 4-groovy
Spring 4-groovy
 
Get ready for spring 4
Get ready for spring 4Get ready for spring 4
Get ready for spring 4
 
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
JavaOne 2009 - TS-5276 - RESTful Protocol Buffers
JavaOne 2009 - TS-5276 - RESTful  Protocol BuffersJavaOne 2009 - TS-5276 - RESTful  Protocol Buffers
JavaOne 2009 - TS-5276 - RESTful Protocol Buffers
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
What’s New in Spring Batch?
What’s New in Spring Batch?What’s New in Spring Batch?
What’s New in Spring Batch?
 
Ajug - The Spring Update
Ajug - The Spring UpdateAjug - The Spring Update
Ajug - The Spring Update
 
What’s expected in Spring 5
What’s expected in Spring 5What’s expected in Spring 5
What’s expected in Spring 5
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
 
DavidWible_res
DavidWible_resDavidWible_res
DavidWible_res
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
 
Future of Java EE with Java SE 8
Future of Java EE with Java SE 8Future of Java EE with Java SE 8
Future of Java EE with Java SE 8
 
The Spring Update
The Spring UpdateThe Spring Update
The Spring Update
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 

Mehr von VMware Tanzu Korea

꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결VMware Tanzu Korea
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가VMware Tanzu Korea
 
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...VMware Tanzu Korea
 
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례VMware Tanzu Korea
 
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례VMware Tanzu Korea
 
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개VMware Tanzu Korea
 
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...VMware Tanzu Korea
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인VMware Tanzu Korea
 
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵 클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵 VMware Tanzu Korea
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)VMware Tanzu Korea
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) VMware Tanzu Korea
 
Pivotal Labs 고객사례 - Coinone
Pivotal Labs 고객사례 - CoinonePivotal Labs 고객사례 - Coinone
Pivotal Labs 고객사례 - CoinoneVMware Tanzu Korea
 
Spring Project와 최신 Pivotal Cloud Foundry 업데이트
Spring Project와 최신 Pivotal Cloud Foundry 업데이트 Spring Project와 최신 Pivotal Cloud Foundry 업데이트
Spring Project와 최신 Pivotal Cloud Foundry 업데이트 VMware Tanzu Korea
 
클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정VMware Tanzu Korea
 

Mehr von VMware Tanzu Korea (20)

꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결
꿀밋업2탄_도메인 모델에 따른 데이터 분리 저장과 API 연결
 
꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가꿀밋업1탄_왜_마이크로서비스인가
꿀밋업1탄_왜_마이크로서비스인가
 
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
2018 Pivotal DevOps Day_DevOps 플랫폼 소개 및 데모 (Pivotal Application Service, Pivo...
 
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례
2018 Pivotal DevOps Day_DevOps 플랫폼 팀 육성/운영 사례
 
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례
2018 Pivotal DevOps Day_마이크로서비스 전환 방법론과 사례
 
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
2018 Pivotal DevOps Day_Pivotal 소개 및 세션 아젠다 소개
 
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
Pivotal Concourse를 활용한 CI/CD pipeline automated build-up & Workflow managemen...
 
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
숨겨진 마이크로서비스: 초고속 응답과 고가용성을 위한 캐시 서비스 디자인
 
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵 클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵
클라우드 네이티브 플랫폼의 미래 - Kubernetes 기반의 PCF 로드맵
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)
굿 소프트웨어 컴퍼니로의 여정(Journey To Be a Good Software Company)
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 
Pivotal Labs 고객사례 - Coinone
Pivotal Labs 고객사례 - CoinonePivotal Labs 고객사례 - Coinone
Pivotal Labs 고객사례 - Coinone
 
Spring Project와 최신 Pivotal Cloud Foundry 업데이트
Spring Project와 최신 Pivotal Cloud Foundry 업데이트 Spring Project와 최신 Pivotal Cloud Foundry 업데이트
Spring Project와 최신 Pivotal Cloud Foundry 업데이트
 
Netflix MSA and Pivotal
Netflix MSA and PivotalNetflix MSA and Pivotal
Netflix MSA and Pivotal
 
클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정클라우드 네이티브로의 전환을 위한 여정
클라우드 네이티브로의 전환을 위한 여정
 
Cloud native enterprise
Cloud native enterpriseCloud native enterprise
Cloud native enterprise
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Spring5 New Features - Nov, 2017

  • 1. © Copyright 2017 Pivotal Software, Inc. All rights Reserved. Version 1.0 Jay Lee(jaylee@pivotal.io) Younjin Jeong(yjeong@pivotal.io) November 2017 Spring 5 New Features
  • 3.
  • 4.
  • 5.
  • 12. JDK 9, HTTP/2, Reactive
  • 14. Spring 5 Major Changes ! Java 9 Compatible ! JavaEE8 Support ! HTTP/2 Support ! Reactive: WebFlux, Router Functions ! Functional Bean Configuration ! JUnit 5 ! Portlet Deprecated
  • 15. Baseline Changes Version Upgrades introduced in Spring 5 !JDK 8+ !Servlet 3.1+ !JMS 2.0 !JPA 2.1 !JavaEE7+
  • 16. Baseline Changes – Java9 Jigsaw SPR-13501: Declare Spring modules with JDK 9 module metadata is still Open Manifest-Version: 1.0 Implementation-Title: spring-core Automatic-Module-Name: spring.core Implementation-Version: 5.0.2.BUILD-SNAPSHOT Created-By: 1.8.0_144 (Oracle Corporation)
  • 17. JavaEE 8 GA – Sep 21, 2017 ! CDI 2.0 (JSR 365) ! JSON-B 1.0 (JSR 367) ! Servlet 4.0 (JSR 369) ! JAX-RS 2.1 (JSR 370) ! JSF 2.3 (JSR 372) ! JSON-P 1.1 (JSR 374) ! Security 1.0 (JSR 375) ! Bean Validation 2.0 (JSR 380) ! JPA 2.2 - Maintenance Release
  • 18. Java API for JSON Binding (JSON-B) 1.0 – JSR 367 Standard Binding Layer for converting Java objects to/from JSON ! Thread Safe ! Apache Johnzon ! Eclipse Yasson
  • 19. Java API for JSON Binding (JSON-B) 1.0 – JSR 367 Person person = new Person();
 person.name = ”Jay Lee";
 person.age = 1;
 person.email = “jaylee@pivotal.io”;
 
 Jsonb jsonb = JsonbBuilder.create();
 String JsonToString = jsonb.toJson(person);
 
 System.out.println(JsonToString );
 
 person = jsonb.fromJson("{"name":”Jay Lee","age":1,”email":”jaylee@pivotal.io"}", Person.class);
  • 20. Java API for JSON Binding (JSON-B) 1.0 – JSR 367 <dependency>
 <groupId>org.apache.geronimo.specs</groupId>
 <artifactId>geronimo-json_1.1_spec</artifactId>
 <version>1.0</version>
 </dependency>
 <dependency>
 <groupId>org.apache.johnzon</groupId>
 <artifactId>johnzon-jsonb</artifactId>
 <version>1.1.5</version>
 </dependency>
  • 21. Java API for JSON Binding (JSON-B) 1.0 – JSR 367 <dependency>
 <groupId>org.glassfish</groupId>
 <artifactId>javax.json</artifactId>
 <version>1.1.2</version>
 </dependency>
 <dependency>
 <groupId>org.eclipse</groupId>
 <artifactId>yasson</artifactId>
 <version>1.0.1</version>
 </dependency>
  • 22. Java API for JSON Binding (JSON-B) 1.0 – JSR 367 New HttpMessageConverter for JSON-B in Spring5 @Bean
 public HttpMessageConverters customConverters() {
 Collection<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
 JsonbHttpMessageConverter jsonbHttpMessageConverter = new JsonbHttpMessageConverter();
 messageConverters.add(jsonbHttpMessageConverter);
 
 return new HttpMessageConverters(true, messageConverters);
 }
  • 23. Servlet 4.0 – Server Push Server pushes resources to Clients, efficient way to transfer resources using HTTP/2 @GetMapping("/pushbuilder")
 public String getPage(PushBuilder builder) {
 builder.path("/scripts.js").push();
 builder.path("/styles.css").push();
 
 return "index";
 }
  • 24. Servlet 4.0 – HttpServletMapping Provide Runtime Discovery of URL Mappings @GetMapping("/servlet4")
 public void index(final HttpServletRequest request) {
 HttpServletMapping mapping = request.getHttpServletMapping(); 
 System.out.println(mapping.getServletName());
 System.out.println(mapping.getPattern());
 System.out.println(mapping.getMappingMatch().name());
 System.out.println(mapping.getMatchValue());
 }
  • 25. Bean Validation 2.0 – JSR 380 1.1 was introduced in 2013, lacking of supports for new Java8, 9. ! New JDK Types Including LocalTime, Optional and etc ! Lambda ! Type Annotation ! @Email, @Positive, @PositiveOrZero, @Negative, @NegativeOrZero, @PastOrPresent, @FutureOrPresent, @NotEmpty, and @NotBlank.
  • 26. Spring 5 Major Changes ! Logging Enhancement ! Performance Enhancement ! Functional Bean Configuration ! JSR 305 ! Spring MVC - HTTP/2 Support, ! Reactive: WebFlux, Router Functions ! JUnit 5
  • 27. Spring 5 – XML Configuration Changes Streamlined to use unversioned Schema
  • 28. Spring 5 - Logging Enhancement spring-jcl replaces Commons Logging by default ! Autodetecting Log4j 2.x, SLF4J, and JUL (java.util.logging) by Class Loading
  • 29. Spring 5 - Logging Enhancement
  • 30. Spring 5 - Component Scanning Enhancement Component scanning time reduced by index, improving Start Up Time • META-INF/spring.components is created at Compile Time • @Indexed Annotation • org.springframework.context.index.CandidateComponentsIndex • -Dspring.index.ignore=true to fall back to old mechanism @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 public @interface Component {
 String value() default "";
 } @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Indexed
 public @interface Component {
 String value() default "";
 }
  • 31. Spring 5 - Component Scanning Enhancement <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context-indexer</artifactId>
 <optional>true</optional>
 </dependency>
  • 32. Spring 5 - Component Scanning Enhancement • JMH Result, ClassPath Scanning versus Index Scanning • Noticeable Differences in having more classes https://github.com/snicoll-scratches/test-spring-components-index
  • 33. Spring 5 - Functional Bean Configuration Support for Functional Bean Registration in GenericApplicationContext, AnnotationConfigApplicationContext ! Very efficient, no reflection, no CGLIB proxies involved ! Lambda with Supplier act as a FactoryBean
  • 34. Spring 5 - Functional Bean Configuration @Autowired
 GenericApplicationContext ctx;
 
 @Test
 public void functionalBeanTest() {
 ctx.registerBean(Person.class, () -> new Person());
 ctx.registerBean("personService", Person.class,
 () -> new Person(), bd -> bd.setAutowireCandidate(false));
 ctx.registerBean(”carService", Car.class,
 () -> new Car(), bd -> bd.setScope(BeanDefinition.SCOPE_PROTOTYPE));
 }
  • 35. Spring 5 – JSR 305 SPR-15540 Introduce null-safety of Spring Framework API • Becomes Kotlin Friendly (-Xjsr305=strict as of 1.1.51) https://github.com/spring-projects/spring-framework/commit/f813712f5b413b354560cd7cc006352e9defa9a3
  • 36. Spring 5 – JSR 305 Nullable New Annotation org.springframework.lang.NonNull, org.springframework.lang.Nullable leverages JSR 305 @Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
 @Nonnull
 @TypeQualifierNickname
 public @interface NonNull {
 }
  • 37. Spring 5 – Spring MVC HTTP/2 and Servlet 4.0 • PushBuilder • WebFlux • Support Reactor 3.1, RxJava 1.3, 2.1 as return values • JSON BINDING API • Jackson 2.9 • Protobuf 3.0 • URL Matching
  • 38. Spring 5 – HTTP/2 Support Containers ! Tomcat 9.0 ! Jetty 9.3 ! Undertow 1.4 ex. Spring Boot <dependency>
 <groupId>org.apache.tomcat</groupId>
 <artifactId>tomcat-juli</artifactId>
 <version>9.0.1</version>
 </dependency>
  • 39. Spring 5 MVC – Multipart File Size MaxUploadSizeExceededException will be thrown for multipart size overrun • Default Value • Two Properties(Default Value) • spring.servlet.multipart.max-file-size=1MB
 spring.servlet.multipart.max-request-size=10MB
  • 40. Spring 5 MVC – URL Matcher changed PathPatternParser is alternative to Traditional AntPathMatcher for URL Matching • org.springframework.web.util.patterns.PathPattern Examples: /pages/t?st.html —/pages/test.html, /pages/tast.html  /pages/toast.html /resources/*.png — matches all .png files in the resources directory /resources/** — matches all files underneath the /resources/ path, including /resources/ image.png and /resources/css/spring.css /resources/{*path} — matches all files underneath the /resources/ path and captures their relative path in a variable named "path"; /resources/image.png will match with ”path" -> "/image.png", and / resources/css/spring.css will match with ”path" -> "/css/spring.css" /resources/{filename:w+}.dat will match /resources/spring.dat and assign the value "spring" to the filename variable
  • 41. Spring 5 MVC – Throwing Exception from Controller ResponseStatusException is Introduced to throw Exception in MVC • SPR-14895:Allow HTTP status exceptions to be easily thrown from Controllers • ResponseEntity(HttpStatus.BAD_REQUEST)? @GetMapping ( "/throw" )
 public void getException () {
 throw new ResponseStatusException( HttpStatus. BAD_REQUEST , "request invalid." ); 
 }
  • 42. Spring 5 WebFlux – WebClient Reactive Web Client introduced in Spring 5, alternative to RestTemplate ! AsyncRestTemplate is deprecated WebClient client= WebClient.create();
 
 Mono<Person> person=client
 .get()
 .uri("http://jay-person.cfapps.io/{name}",name)
 .retrieve()
 .bodyToMono(Person.class);
  • 43. Spring 5 WebFlux –WebTestClient @RunWith(SpringRunner.class)
 @SpringBootTest
 @AutoConfigureWebTestClient
 public class MicrometerApplicationTests {
 @Autowired
 WebTestClient client;
 
 @Test
 public void testWebClient() {
 client.get().uri("/person/Jay")
 .exchange()
 .expectBody(Person.class)
 .consumeWith(result -> assertThat(result.getResponseBody().getName()).isEqualTo("Jay Lee"));
 }
  • 44. Spring 5 WebFlux – Server RouterFunction is introduced for functional programming RouterFunction<?> route = route(GET("/users"), request ->
 ok().body(repository.findAll(), Person.class))
 .andRoute(GET("/users/{id}"), request ->
 ok().body(repository.findOne(request.pathVariable("id")), Person.class))
 .andRoute(POST("/users"), request ->
 ok().build(repository.save(request.bodyToMono(Person.class)).then())
 );
  • 45. WebFlux server (functional) RouterFunction<?> route = route(GET("/users"), request -> ok().body(repository.findAll(), User.class)) .andRoute(GET("/users/{id}"), request -> ok().body(repository.findOne(request.pathVariable("id")), User.class)) .andRoute(POST("/users"), request -> ok().build(repository.save(request.bodyToMono(User.class)).then()) );
  • 46. Spring Boot and Cloud Spring Boot 2.0 will be GA in Feb 2018 ! Spring Cloud Finchley Release Train based on Spring Boot 2.0 ! Spring Cloud Gateway ! Spring Cloud Function
  • 48. Spring 5 – Deprecated APIs HTTP/2 and Servlet 4.0 • Hibernate 3, 4 • Portlet • Velocity • JasperReports • XMLBeans • JDO • Guava
  • 50. Transforming How The World Builds Software © Copyright 2017 Pivotal Software, Inc. All rights Reserved.