Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Eberhard Wolff on Spring Boot

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Eberhard Wolff on Spring Boot

More Decks by Enterprise Java User Group Austria

Other Decks in Technology

Transcript

  1. Spring Boot Main @EnableAutoConfiguration @ComponentScan public class Main { public

    static void main(String[] args) { SpringApplication.run(Main.class, args); } }   Enable Spring Boot Configuration e.g. Web environment etc Scan for Spring annotations e.g. @Component @Configuration etc In this package and all sub packages Start application e.g. Tomcat, Spring web environment etc @SpringBootApplication = @ComponentScan+ @EnableAutoConfiguration+ @Configuration
  2. Spring Boot: Maven pom.xml <project ...> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.1.RELEASE</version>

    </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ... </dependencies> Configuration inherits from parent Sets versions for dependencies Add all needed libs for a web app Many starters available
  3. Spring Boot: Maven pom.xml ... <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>

    </plugin> </plugins> </build> </project>   Makes WAR / JAR executable Support mvn spring-boot:run to run the app
  4. Spring Boot §  Build much easier §  Supports Gradle &

    Ant, too §  Not limited to simple application §  Can add any other library §  Application much easier to test, debug etc §  Simple code
  5. Spring Data JPA §  Makes implementation of repositories trivial § 

    Just provide an interface §  Needs JPA infrastructure of course
  6. Spring Data JPA Repository public interface CustomerRepository extends JpaRepository<Customer, Long>

    { List<Customer> findByName(String name); }   Defines all basic CRUD (Create, Read, Update, Delete) operations Implementation created by naming convention Add Spring Boot Starter Data JPA No further configuration Without Spring Boot <repositories base-package="de.project" /> or @EnableJpaRepositories("de.project")
  7. Behind the Scenes §  DataSource for HSQL created §  JPA

    infrastructure created §  Thymeleaf infrastructure created §  How does it work? §  Convention over configuration
  8. Spring Boot §  Creates sensible infrastructure defaults §  i.e. DataSource

    if HSQL is on the classpath §  Done by *AutoConfiguration classes
  9. Spring Boot Starter amqp aop batch data-jpa data-mongodb data-rest integration

    jdbc mobile redis security test web websocket actuator remote-shell jetty tomcat log4j logback data-solr data-elasticsearch data-gemfire groovy-templates freemarker thymeleaf mustache undertow velocity social-facebook social-linkedin social-twitter
  10. Dev §  Turn Around §  Thymeleaf Templates can be changed

    on the fly §  …same with class files §  Spring Loaded makes reloading more powerful
  11. CRaSH Shell §  Ever ssh’d into your application? §  Enter

    CRaSH §  External library integrated into Spring Boot §  Alternative approach to operations
  12. Actuator §  Provide information about the application §  Via http

    / JSON §  Can be evaluated by monitoring tools etc. §  Another alternative approach to monitoring
  13. Deploy §  Just package everything in an executable JAR § 

    …or a WAR §  Based on Maven or Gradle §  Build in configuration (YAML, properties etc.)
  14. What‘s next? Spring Cloud §  Technologies for Micro Services § 

    E.g. Configuration §  Resilience §  Netflix stack §  Cloud Bus §  Cloud Security §  Based on Spring Boot
  15. Conclusion §  Easy to start §  Can add libraries and

    features as needed §  Dev: Quick turn around §  Ops: Integrated monitoring §  Ops: Easy deployment §  Didn’t show Groovy support
  16. Spring Boot & Microservices §  Simplifies deployment §  Standardizes Ops

    interface §  Simplify creating REST / web applications