spring boot – framework for micro servicesbottega.com.pl/pdf/materialy/springbootservices.pdf ·...
TRANSCRIPT
![Page 2: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/2.jpg)
whoami
![Page 3: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/3.jpg)
History
• 1999 J2EE 1.2
• 2001 xDoclet 1.0
• 2004 Spring Framework 1.0● Injection● POJO oriented● AOP & transactions
• 2006 Java EE 5
![Page 4: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/4.jpg)
'Classic' way
• hundreds of thousands LOC
• thousands of tests ... or not
• hundreds of issues in jira
• and a lot of design patterns
... lava flow, big ball of mud, orgy, yo-yo
![Page 5: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/5.jpg)
'Classic' way
![Page 6: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/6.jpg)
Micro way
• Single responsibility
• Loosely coupled
• Reliable
• Small, light
![Page 7: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/7.jpg)
Micro way
![Page 8: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/8.jpg)
Hard?
• Versioning
• Integration testing
• Boilerplate bootstrap code
![Page 9: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/9.jpg)
History
• 1999 J2EE 1.2
• 2001 xDoclet 1.0
• 2004 Spring Framework 1.0● Injection● POJO oriented● AOP & transactions
• 2006 Java EE 5
• 2013 Spring Boot!
![Page 10: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/10.jpg)
Focus
source: spring.io
![Page 11: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/11.jpg)
Revolution
@RestController@EnableAutoConfigurationpublic class HelloWorld {
@RequestMapping("/") public String helloWorld() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(HelloWorld.class, args); }
}
![Page 12: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/12.jpg)
Key features
• Stand-alone Spring applications
• Embedded Tomcat or Jetty
• Starter dependencies
• Automatic configuration
• Production-ready environment
• No code generation / no XML config
![Page 13: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/13.jpg)
Blocks
• SpringApplication
• @EnableAutoConfiguration
• @ConditionalOnClass
• @ConditionalOnBean
• @ConditionalOnExpression
![Page 14: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/14.jpg)
Sample auto-configuration
@Configuration
@ConditionalOnClass({ MBeanExporter.class })
@ConditionalOnMissingBean({ MBeanExporter.class })
@ConditionalOnExpression("${spring.jmx.enabled:true}")
public class JmxAutoConfiguration {
...
}
![Page 15: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/15.jpg)
Starters
• spring-boot-starter
• spring-boot-starter-web
• spring-boot-starter-test
• spring-boot-starter-actuator
![Page 16: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/16.jpg)
Starters
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
![Page 17: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/17.jpg)
Production ready
• Monitoring endpoints● /health● /info● /metrics● /mappings
• JMX / SSH
• Auditing
![Page 18: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/18.jpg)
Properties
@ConfigurationProperties(prefix=”mail”)
public class MailProperties {
private InetAddress serverAddress;
private Resource template;
}
mail.serverAddress : 84.123.456.32
mail.template : classpath:mail.vm
![Page 19: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/19.jpg)
Profiles
• spring.profiles.active = production,mysql
• configuration per profile:● application-production.properties● conference-test.properties
![Page 20: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/20.jpg)
Logging
• log4j
• logback
• java.util.Logging
![Page 21: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/21.jpg)
Security
• spring-boot-starter-security
• @SecurityAutoConfiguration
• @SecurityProperties● security.requireSsl = true
![Page 22: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/22.jpg)
WAR
public class WebInit extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder
configure(SpringApplicationBuilder application) {
return application.sources(SampleApplication.class);
}
}
![Page 23: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/23.jpg)
Tests
@SpringApplicationConfiguration(classes =
Application.class)
@ContextConfiguration(classes = Application,
loader = SpringApplicationContextLoader)
@IntegrationTest
![Page 24: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/24.jpg)
It's Spring
![Page 25: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/25.jpg)
How it helps?
● Dramatically reduces boilerplate code● Enables polyglot● Simplifies integration testing● Simplifies environment maintenance
![Page 26: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/26.jpg)
You have questions
I (probably) have answers
![Page 27: Spring Boot – framework for micro servicesbottega.com.pl/pdf/materialy/SpringBootServices.pdf · Spring Boot – framework for micro services Jakub Kubryński jk@devskiller.com](https://reader034.vdocuments.net/reader034/viewer/2022051507/5a7814077f8b9a1b688e71bc/html5/thumbnails/27.jpg)
END! THANK YOU