javacro'15 - bootylicious spring - karlo novak

21
BOOTylicious Spring Karlo Novak, SV Group d.o.o. [email protected]

Category:

Technology


4 download

TRANSCRIPT

Page 1: JavaCro'15 - BOOTylicious Spring - Karlo Novak

BOOTylicious Spring

Karlo Novak, SV Group [email protected]

Page 2: JavaCro'15 - BOOTylicious Spring - Karlo Novak

• 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
Page 4: JavaCro'15 - BOOTylicious Spring - Karlo Novak

• 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

Standalone Spring aplikacije

java –jar app.jar

SpringBootServletInitializer

app.war

Page 6: JavaCro'15 - BOOTylicious Spring - Karlo Novak

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

Konfiguracija (2/5)

Starter POM

Page 8: JavaCro'15 - BOOTylicious Spring - Karlo Novak

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

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

Konfiguracija (5/5)

Default

application.properties

OS

Java system

JNDI

Command line

Page 11: JavaCro'15 - BOOTylicious Spring - Karlo Novak

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
Page 13: JavaCro'15 - BOOTylicious Spring - Karlo Novak

Primjer REST servisa

Page 14: JavaCro'15 - BOOTylicious Spring - Karlo Novak

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

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

Perspektiva

JHipster

Angular

Spring Boot

Netflix aktivno i intenzivno koristi

Spring Boot, uglavnom za razvoj

mikroservisa

I mi ga koristimo

Page 17: JavaCro'15 - BOOTylicious Spring - Karlo Novak

Nije mi to dosta

https://start.spring.io

Page 18: JavaCro'15 - BOOTylicious Spring - Karlo Novak

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 19: JavaCro'15 - BOOTylicious Spring - Karlo Novak

https://github.com/spring-io/sagan

Page 20: JavaCro'15 - BOOTylicious Spring - Karlo Novak

Zaključak

– Pojednostavljen razvoj

– Konfiguracija

– Fokus na aplikaciji

– Puštanje u produkciju

– Opinionated

– Deploy na aplikacijske servere?

Spring Boot je i dalje Spring!

Page 21: JavaCro'15 - BOOTylicious Spring - Karlo Novak

A sad vi...

[email protected]