Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Spring boot Introduction

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
Spring Boot Tutorial
Spring Boot Tutorial
Cargando en…3
×

Eche un vistazo a continuación

1 de 26 Anuncio

Spring boot Introduction

Descargar para leer sin conexión

Welcome to presentation on Spring boot which is really great and relatively a new project from Spring.io. Its aim is to simplify creating new spring framework based projects and unify their configurations by applying some conventions. This convention over configuration is already successfully applied in so called modern web based frameworks like Grails, Django, Play framework, Rails etc.

Welcome to presentation on Spring boot which is really great and relatively a new project from Spring.io. Its aim is to simplify creating new spring framework based projects and unify their configurations by applying some conventions. This convention over configuration is already successfully applied in so called modern web based frameworks like Grails, Django, Play framework, Rails etc.

Anuncio
Anuncio

Más Contenido Relacionado

A los espectadores también les gustó (18)

Anuncio

Similares a Spring boot Introduction (20)

Más reciente (20)

Anuncio

Spring boot Introduction

  1. 1. Spring Boot - By Jeevesh Pandey
  2. 2. • What and Why? • Key features of Spring boot. • Prototyping using CLI. • Working with Spring Boot with gradle. • Packaging Executable Jars / Fat jars • Managing profiles • Binding Properties - Configurations • Using Spring data libraries • Presentation layer(A glimpse) • Miscellaneous Agenda
  3. 3. • Spring-boot provides a quick way to create a Spring based application from dependency management to convention over configuration. • It’s not a replacement for Spring framework but it presents a small surface area for users to approach and extract value from the rest of Spring. • To provide a range of non-functional features that are common to large classes of projects (e.g. embedded servers, security, metrics, health checks, externalized configuration) • Grails 3.0 will be based on Spring Boot. 3 What and Why ?
  4. 4. • Stand-alone Spring applications with negligible efforts. • No code generation and no requirement for XML Config • Automatic configuration by creating sensible defaults • Provides Starter dependencies / Starter POMs. • Structure your code as you like • Supports Gradle and Maven • Provides common non-functional production ready features for a “Real” application such as – security – metrics – health checks – externalised configuration Key Features
  5. 5. • Quickest way to get a spring app off the ground • Allows you to run groovy scripts without much boilerplate code • Not recommended for production Install using SDK $ sdk install springboot Running groovy scripts $ spring run app.groovy $ spring jar test.jar app.groovy Rapid Prototyping : Spring CLI
  6. 6. @Controller class Example { @RequestMapping("/") @ResponseBody public String helloWorld() { "Hello Spring boot audience!!!" } } Getting Started Quickly using CLI
  7. 7. // import org.springframework.web.bind.annotation.Controller // other imports ... // @Grab("org.springframework.boot:spring-boot-starter-web:0.5.0") // @EnableAutoConfiguration @Controller class Example { @RequestMapping("/") @ResponseBody public String hello() { return "Hello World!"; } // public static void main(String[] args) { // SpringApplication.run(Example.class, args); // } } What Just Happened ?
  8. 8.  One-stop-shop for all the Spring and related technology  A set of convenient dependency descriptors  Contain a lot of the dependencies that you need to get a project up and running quickly  All starters follow a similar naming pattern;  spring-boot-starter-*  Examples  spring-boot-starter-web(tomcat and spring mvc dependencies) – spring-boot-starter-actuator – spring-boot-starter-security – spring-boot-starter-data-rest – spring-boot-starter-amqp – spring-boot-starter-data-jpa – spring-boot-starter-data-elasticsearch – spring-boot-starter-data-mongodb Starter POMs
  9. 9. @Grab('spring-boot-starter-security') @Grab('spring-boot-starter-actuator') @Grab('spring-boot-starter-jetty') @Controller class Example { @RequestMapping("/") @ResponseBody public String helloWorld() { return "Hello Audience!!!" } } //security.user.name //security.user.password //actuator endpoints: /beans, /health, /mappings, /metrics etc. Demo : Starter POM
  10. 10. Spring Initializer ● Using Intellij Idea Spring initializer ● Using start.spring.io https://start.spring.io/
  11. 11. apply plugin: 'groovy' apply plugin: 'java' apply plugin: 'idea' apply plugin: 'spring-boot' buildscript { repositories { mavenCentral()} dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE") classpath 'org.springframework:springloaded:1.2.0.RELEASE' } } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all' compile 'org.springframework.boot:spring-boot-starter-web' } Generated Gradle Build Script
  12. 12. 12 $ gradle build $ java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar Build and Deploy
  13. 13. • Put application.properties/application.yml somewhere in classpath • Easy one: src/main/resources folder 13 app: name: Springboot+Config+Yml+Demo version: 1.0.0 server: port: 8080 settings: counter: 1 --- spring: profiles: development server: port: 9001 app.name=Springboot+Config+Demo app.version=1.0.0 server.port=8080 settings.counter=1 application.properties app.name=Springboot+Config+D emo app.version=1.0.0 server.port=8080 application-dev.properties Environments and Profiles application.properties
  14. 14. 14 export SPRING_PROFILES_ACTIVE=development export SERVER_PORT=8090 gradle bootRun java -jar build/libs/demo-1.0.0.jar java -jar -Dspring.profiles.active=development build/libs/dem-1.0.0.jar java -jar -Dserver.port=8090 build/libs/demo-1.0.0.jar OS env variable with a -D argument (JVM Argument) Examples
  15. 15. 15AQA1 import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "app") public class AppInfo { private String name; private String version; } Using ConfigurationProperties annotation import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class AppConfig { @Value('${app.name}') private String appName; @Value('${server.port}') private Integer port; } Using Value annotation Binding Properties
  16. 16. Using Spring data:MySQL • Add dependency • Configure database URL compile 'mysql:mysql-connector-java:5.1.6' compile 'org.springframework.boot:spring-boot-starter-jdbc' compile 'org.springframework.boot:spring-boot-starter-data-jpa' spring.datasource.url= jdbc:mysql://localhost/springboot spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=create-drop
  17. 17. • • Entity class • import javax.persistence.*; @Entity public class User{ @Id private Long id; private String name; //Getter and Setter } Using Spring data:MySQL
  18. 18. • • Add repository interface import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long>{ User findByName(String name); } • Usage @Autowired private UserRepository userRepository; userRepository.findByName(); userRepository.save(); userRepository.findAll(); For more : http://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations- 096251.html
  19. 19. View templates libraries(A Glimpse) • JSP/JSTL • Thymeleaf • Freemarker • Velocity • Tiles • GSP • Groovy Template Engine 20
  20. 20. Logging $ java -jar myapp.jar --debug logging.level.*: DEBUG_LEVEL E.g. logging.level.intellimeet: ERROR
  21. 21. Actuator for Production ID Description Sensitiv e autoconfig Displays an auto-configuration report showing all auto- configuration candidates and the reason why they ‘were’ or ‘were not’ applied. true beans Displays a complete list of all the Spring beans in your application. true configprops Displays a collated list of all @ConfigurationProperties. true dump Performs a thread dump. true env Exposes properties from Spring’s ConfigurableEnvironment. true health Shows application health information (a simple ‘status’ when accessed over an unauthenticated connection or full message details when authenticated). false info Displays arbitrary application info. false metrics Shows ‘metrics’ information for the current application. true mappings Displays a collated list of all @RequestMapping paths. true shutdown Allows the application to be gracefully shutdown (not enabled by default). true trace Displays trace information (by default the last few HTTP requests). true
  22. 22. Miscellaneous - Enabling Disabling the Banner - Changing the Banner (http://www.kammerl.de/ascii/AsciiSignature.php) - Adding event Listeners - Logging startup info
  23. 23. References 25 Samples : https://github.com/bhagwat/spring-boot-samples http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started-gvm- cli-installation https://github.com/spring-projects/spring-boot/tree/master/spring-boot-cli/samples http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter- poms http://spring.io/guides/gs/accessing-mongodb-data-rest/ https://spring.io/guides/gs/accessing-data-mongodb/ https://spring.io/guides/gs/accessing-data-jpa/ http://www.gradle.org/ http://www.slideshare.net/Soddino/developing-an-application-with-spring-boot-34661781 http://presos.dsyer.com/decks/spring-boot-intro.html http://pygments.org/ for nicely formatting code snippets included in presentation

×