spring boot. boot up your development. jeeconf 2015
TRANSCRIPT
About author
• Works in IT since 2000• 11 years of Java SE/EE experience• Multiple speaker at Java User Group• Founder of http://it-simulator.com• Author of “Main Java programming errors”
and “Development of Java applications” books
Agenda
• Overview• Spring Boot features• Setup & configuration• Q&A
Goal
Goal
• Development environment• Launch web application• Minimum configuration
Plugins
Plugins
Spring Boot
• Stand-alone Spring applications • Embed Tomcat or Jetty directly• Automatically Spring configuration• Absolutely no code generation and no requirement for XML configuration• Convention-over-configuration• Focus on business features and less oninfrastructure
Starters concept
• Aggregate modules• Trusted versions of libraries• Similar to micro-service architecture
Starters concept
• spring-boot-starter-actuator• spring-boot-starter-data-jpa• spring-boot-starter-jdbc• spring-boot-starter-jersey• spring-boot-starter-logging• spring-boot-starter-mobile• spring-boot-starter-redis• spring-boot-starter-test• spring-boot-starter-web
Spring Boot
Spring Boot
Spring Boot
Servlets
Filters
Spring Boot plugin
Spring Boot plugin
• spring-boot:run• spring-boot:repackage
Hot replace
Hot replace
Dependencies
Dependencies
Customization
Tomcat 7
Jetty
Auto-configuration
• AopAutoConfiguration• JpaRepositoriesAutoConfiguration• HibernateJpaAutoConfiguration• DataSourceAutoConfiguration• JmsTemplateAutoConfiguration• MongoAutoConfiguration• RedisAutoConfiguration• WebMvcAutoConfiguration• SecurityAutoConfiguration
Properties
Properties
Properties
Class Prefix
MessageSourceAutoConfiguration spring.messages
BatchProperties spring.batch
ElasticsearchProperties spring.data.elasticsearch
FreeMarkerProperties spring.freemarker
JacksonProperties spring.jackson
DataSourceProperties spring.datasource
JerseyProperties spring.jersey
MailProperties spring.mail
MongoProperties spring.data.mongodb
SecurityProperties security
WebMvcProperties spring.mvc
Properties
Production
Production
• Industry not ready• Limited web servers support• No UI• Spring Boot knowledge
Spring Boot Actuator
• Helps manage and monitor applications when pushed to production
• Accessible via HTTP, JMX or remote shell• You can't manage what you can't measure
Spring Boot Actuator
• Series of endpoints to help manage your Spring application• Reads properties and spring beans and then returns a JSON view• Allows direct access to non functional
application information without having to open an IDE or a command prompt
Spring Boot Actuator
Spring Boot Actuator
• /info• /health• /beans• /env• /dump• /metrics• /trace• /autoconfigurationreport• /shutdown
Spring Boot Actuator. Health
Indicators
DiskSpaceHealthIndicator Checks for low disk space.
DataSourceHealthIndicator Checks that a connection to DataSource can be obtained.
MongoHealthIndicator Checks that a Mongo database is up.
RabbitHealthIndicator Checks that a Rabbit server is up.
RedisHealthIndicator Checks that a Redis server is up.
SolrHealthIndicator Checks that a Solr server is up.
Spring Boot Actuator. Health
Spring Boot Actuator. Health
Spring Boot Actuator. Info
Spring Boot Actuator. Info
Spring Boot Actuator.Metrics
• Includes a metrics service with ‘gauge’ and ‘counter’ support
• A ‘gauge’ records a single value; and a ‘counter’ records a delta (an increment or decrement)
• Metrics for all HTTP requests are automatically recorded
Spring Boot Actuator.Metrics
• System metrics• Datasource metrics• WebServer metrics• Custom metrics
Spring Boot Actuator. Metrics
Spring Boot Actuator. Custom metrics
Spring Boot Actuator. Metrics
Spring Boot Actuator. Repository
Spring Boot Actuator. Repository
• Dropwizard• Zabbix• JMX messaging
Security
• Mostly local usage• Read-only access• Integration with Spring Security
Security
Security
Manuals
Pro
• Reduces deployment and development time
• No configuration files• Auto-configuration• Maven, Gradle & Ant integration• Embedded servers• Multiple technologies support• Monitoring & management out-of-box
Cons
• Based on Spring Framework• Additional configuration for web servers
Dropwizard
• Lightweight alternative• REST web services support using Jersey• Embedded servers• Logging and validation• Templating systems• Metrics library
Q&A