Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spring Boot quickstart

167 views

Published on

Spring Boot design principles and features incl. a hands on demo with Apache CXF

Published in: Technology
  • Be the first to comment

Spring Boot quickstart

  1. 1. Spring Boot quickstart …with a little bit of Apache CXF Jonas Hecht
  2. 2. 2 About me Jonas Hecht, Senior IT-Consultant https://blog.codecentric.de/ author/jonas-hecht/ jonas.hecht@codecentric.de @jonashackt github.com/jonashackt
  3. 3. 3 I know Spring. But what´s that Spring Boot thingy?
  4. 4. 4 https://spring.io/projects
  5. 5. 5 http://projects.spring.io/spring-boot https://github.com/spring-projects/spring-boot http://start.spring.io/ https://spring.io/blog/2016/07/28/spring- boot-1-4-released Where to start?
  6. 6. 6 Main design goals
  7. 7. 7 Picture: https://flic.kr/p/nZxKRM
  8. 8. 8 http://projects.spring.io/spring-boot/ “Spring Boot […] is designed to get you up and running as quickly as possible.”
  9. 9. 9 Picture: https://flic.kr/p/aD4qRA
  10. 10. 10 Spring Boot favors convention over configuration […]. http://projects.spring.io/spring-boot/
  11. 11. 11 And the details?
  12. 12. 12 Picture: https://flic.kr/p/qRbJHR
  13. 13. 13 Picture: https://flic.kr/p/cGmP7A
  14. 14. 14 Embedded Tomcat, Jetty… Stand-alone No need to deploy .war’s/.ear’s
  15. 15. 15 $ java -jar cxf-boot-simple-0.0.1-SNAPSHOT.jar! or! $ mvn spring-boot:run! Stand-alone, no deployment
  16. 16. 16Picture: https://flic.kr/p/dwSu3Z
  17. 17. 17 'starter' POMs to simplify Maven configuration
  18. 18. 18 ! Batch, Messaging, Caching, Relational Databases, JPA, NoSQL, whatever, Redis, Integration, Logging, WebServices, Mail, Security, Webapps, REST,… ! official: https://github.com/spring-projects/spring-boot/tree/ master/spring-boot-starters ! community: https://github.com/spring-projects/spring-boot/tree/ master/spring-boot-starters#community-contributions 'starter' POMs
  19. 19. 19Picture: https://flic.kr/p/8Fyhn9
  20. 20. 20 Automatically configure Spring whenever possible
  21. 21. 21 import org.springframework.boot.autoconfigure.condition.*; @Configuration annotated Classes: @Conditional @ConditionalOnBean(YourClassHere.class) @ConditionalOnProperty(“your.property.here“) @ConditionalOnResource ... Automatic configuration
  22. 22. 22Picture: https://flic.kr/p/6HgM6u
  23. 23. 23 Production-ready features Metrics, health checks, externalized configuration…
  24. 24. 24
  25. 25. 25 No code generation No XML configuration!
  26. 26. 26 I want my own custom Spring Boot Starter!
  27. 27. 27 Howto: https://blog.codecentric.de/en/2014/11/extending-spring-boot-five- steps-writing-spring-boot-starter/ Examples: https://github.com/spring-projects/spring-boot/tree/master/spring- boot-starters#community-contributions https://github.com/codecentric/spring-boot-starter-batch-web https://github.com/codecentric/cxf-spring-boot-starter Custom Spring Boot Starters
  28. 28. 28 demo
  29. 29. 29 Complete Howto: https://blog.codecentric.de/ 2016/02/spring-boot-apache-cxf/ à http://start.spring.io/ group: de.codecentric.webservice artifact: simpleservice Web & Devtools Demo: web service with Apache CXF 1/4 CXF-Dependencies <!-- Apache CXF --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.7</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.7</version> </dependency>
  30. 30. 30 Demo: web service with Apache CXF 2/4 @Bean public ServletRegistrationBean dispatcherServlet() { return new ServletRegistrationBean(new CXFServlet(), "/soap- api/*"); } @Bean(name= Bus.DEFAULT_BUS_ID) public SpringBus springBus() { return new SpringBus(); }
  31. 31. 31 WSDL: https://github.com/jonashackt/weather-service-wsdl/ jaxws-maven-plugin config see https://blog.codecentric.de/2016/02/spring-boot-apache-cxf/ http://cxf.apache.org/docs/jax-ws-configuration.html Demo: web service with Apache CXF 3/4
  32. 32. 32 @Bean public WeatherService weatherService() { return new WeatherServiceEndpoint(); } @Bean public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(springBus(), weatherService()); endpoint.publish("/WeatherSoapService_1.0"); return endpoint; } Demo: web service with Apache CXF 4/4
  33. 33. 33 Questions? J

×