javacro'15 - bootylicious spring - karlo novak
Upload: hujak-hrvatska-udruga-java-korisnika-croatian-java-user-association
Post on 21-Jul-2015
348 views
TRANSCRIPT
![Page 2: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/2.jpg)
• Zašto Spring Boot?
• Standalone Spring aplikacije
• Konfiguracija
• Kako radi Spring Boot?
• Primjer REST servisa
• Spring Boot Actuator
• Testiranje
• Perspektiva
Sadržaj
![Page 3: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/3.jpg)
![Page 4: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/4.jpg)
• Standalone aplikacije s ugrađenim serverom spremne za produkciju:
– Metrike, health checkovi, remote spajanje na server (SSH, Telnet) itd.
– Mikroservisi
• Konfiguracija bez XML-a
• Starter POM-ovi, lakši dependency management
• Rješava Spring boilerplate
Zašto Spring Boot?
![Page 5: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/5.jpg)
Standalone Spring aplikacije
java –jar app.jar
SpringBootServletInitializer
app.war
![Page 6: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/6.jpg)
Konfiguracija (1/5)
• Maven starter POM-ovi, dependecy management
• Autokonfiguracija bez XML-a
– Opinionated
• Jednostavan override auto konfiguracije
• Eksterna konfiguracija
![Page 7: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/7.jpg)
Konfiguracija (2/5)
Starter POM
![Page 8: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/8.jpg)
Konfiguracija (3/5)
• Starter POM-ovi pokrivaju većinu ovisnosti:
– spring-boot-starter
– spring-boot-starter-web
– spring-boot-starter-thymeleaf
– spring-boot-starter-data-jpa
– spring-boot-starter-redis
– spring-boot-starter-social-facebook
![Page 9: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/9.jpg)
Konfiguracija (4/5)
• application.properties ili application.yml
– spring.profiles.active
– logging.path
– server.port
– server.context-path
– spring.datasource.url=jdbc:mysql://localhost/test
• @Value("${server.port}")
![Page 10: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/10.jpg)
Konfiguracija (5/5)
Default
application.properties
OS
Java system
JNDI
Command line
![Page 11: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/11.jpg)
Kako radi Spring Boot?
• @EnableAutoConfiguration
– Skeniranje classpatha, zaključivanje, instanciranje objekata
– Npr. ako na classpathu pronađe Thymeleaf automatski će kreirati view i view resolver, te Spring template engine
– Daje prednost user beanovima
• NE GENERIRA KOD
![Page 12: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/12.jpg)
![Page 13: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/13.jpg)
Primjer REST servisa
![Page 14: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/14.jpg)
Spring Boot Actuator
• Nefunkcionalne pogodnosti za produkciju
• Dodaje HTTP endpointove:
– /beans
– /dump
– /health
– /info
– /metrics
– /trace
– /shutdown ...
![Page 15: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/15.jpg)
Testiranje
• spring-boot-starter-test
• Spring Test, JUnit, Hamcrest, Mockito
• @SpringApplicationConfiguration
– Spring Boot konfiguracija ApplicationContext-a
• @IntegrationTest
– Za testiranje koristi embeddani server
![Page 16: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/16.jpg)
Perspektiva
JHipster
Angular
Spring Boot
Netflix aktivno i intenzivno koristi
Spring Boot, uglavnom za razvoj
mikroservisa
I mi ga koristimo
![Page 18: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/18.jpg)
Nije mi ni to dosta
• Spring Loaded
– Omogućuje hot reload aplikacije
– Prati promjene nad klasama, automatski ih kompajlira i izmjenjuje
Dosta mi je..
![Page 20: JavaCro'15 - BOOTylicious Spring - Karlo Novak](https://reader033.vdocuments.net/reader033/viewer/2022042602/55ae60bb1a28ab3c798b45cc/html5/thumbnails/20.jpg)
Zaključak
– Pojednostavljen razvoj
– Konfiguracija
– Fokus na aplikaciji
– Puštanje u produkciju
– Opinionated
– Deploy na aplikacijske servere?
Spring Boot je i dalje Spring!