Documente Academic
Documente Profesional
Documente Cultură
Spring Boot
CSVPI
- Proiect -
Îndrumător Student
Conf. dr.ing Dominic M. KRISTALY Vlad – Ştefan PETRE
Cuprins
1. Introducere ....................................................................................................................................3
2. Spring Boot vs Spring MVC .........................................................................................................3
3. Detalii tehnice ...............................................................................................................................4
3.1. Cerințe de sistem: ..................................................................................................................4
3.2. Container pentru servlet-uri ...................................................................................................4
4. Folosirea Spring Boot ...................................................................................................................4
4.1. Configurarea: .........................................................................................................................4
4.2. Auto-configurarea:.................................................................................................................5
4.3. Obiecte Spring și injectarea dependințelor: ...........................................................................5
4.4. Instalarea uneri aplicații Spring Boot ....................................................................................5
4.5. Rularea aplicației: ..................................................................................................................6
5. Caracteristici Spring Boot: ............................................................................................................6
6. Autoconfigurare ............................................................................................................................7
6.1. General...................................................................................................................................7
6.2. Asocierea proprietăților .........................................................................................................9
6.3. Adnotările @Conditional.......................................................................................................9
6.4. ApplicationContextInitializer ................................................................................................9
7. Concluzii .....................................................................................................................................10
2
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
1. Introducere
Spring reprezintă cea mai populară și invovativă comunitate pentru dezvoltatorii de Java. Acesta
schimbă modalitatea de a construi și de a administra aplicații foarte mari. Spring Boot este ultima
lor inovație pentru a ține pasul cu nevoile schimbării tehnologiilor.
Principalul motiv din spatele dezvoltării Spring Boot este simplificarea procesului de configurare și
lansare a aplicațiilor Spring.
Proiectul Spring Boot reprezintă o viziune clară asupra dezvoltării de aplicații Spring gata de
producție. Acesta oferă o convenție asupra configurării și este proiectat pentru a pregăti și rula
aplicații cât mai repede posibil.
Spring Boot facilitează dezvoltarea de aplicații de sine stătătoare pe nivel de producție care pot fi
pur și simplu “executată”. Folosește viziunea clară a platformei Spring, cât și o colecție de
biblioteci de la diferiți terți pentru a începe dezolvatarea unei aplicații fără bătăi de cap, datorită
faptului ca aceasta din urmă are nevoie de foarte puține configurări de Spring.
3
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
3. Detalii tehnice
3.1.Cerințe de sistem:
Versiunile de Spring Boot se pot folosi începân cu Java 6. Versiunea 6 de Java necesită anumite
configurări suplimentare, însă versiunile mai noi sunt integrate nativ.
Recomandarea comunității este de a folosi Java 8 sau mai sus pentru dezolvatarea de aplicații
folosind Spring boot.
De asemenea o aplicație Spring Boot poate fi rulată pe orice container care suportă Servlet
versiunea 3.0 sau mai sus.
4.1.Configurarea:
Spring Boot favorizează configurarea proiectului din cod Java, deși aceasta se poate face și prin
XML. Astfel, clasa ce contine metoda main este candidatul perfect pentru a fi adnotată cu
@Configuration, ceea ce înseamnă că sursa principală este reprezentată de clasă de configurare.
4
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
4.2.Auto-configurarea:
De asemenea, Spring Boot oferă și posibilitatea de autoconfigurare a aplicației în funcțtie de
arhivele .jar ce au fost adaugate. Acest lucru este posibil prin adăugarea adnotarilor
@EnableAutoConfiguration sau @SpringBootApplication pe o clasă deja stabilită pentru
configurare.
Dat fiind faptul că în principiu pentru configurare se folosesc trei adnotări diferite
(@Configuration, @EnableAutoConfiguration și @ComponentScan), Spring Boot introduce o
scurtătură prin @SpringBootApplication care inglobează toate aceste funcționalități.
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
5
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
Spring Boot pune la dispoziție o varietate de metode de instalare a aplicației dezvoltate în acest
sens. O aplicație Spring Boot poate fi instalată pe mai multe platforme cloud, pe mașini reale sau
virtuale, sau pe containere precum Docker.
Arhivele executabile .jar făcute de Spring Boot sunt potrivite pentru a fi puse pe așa numitele
Platforme ca Serviciu oferite de furnizorii cloud. Aceștia tind să ceară ca aplicația să vină cu
propiul container, iar pentru că administrază procese, dar nu neapărat aplicații Java, este nevoie de
un strat superior care să adapteze aplicație în cauză la un proces ce rulează în cloud.
Cei mai populari furnizorii de servicii cloud care au suport pentru aplicații Spring Boot sunt Cloud
Foundry, Heroku și Amazon Web Services.
4.5.Rularea aplicației:
Prin faptul că împachetarea aplicației se face în formatul .jar și este folosit un server HTTP integrat
se oferă avantajul rulării mult mai facile, mai rapide, și de asemenea posibilitatea de debug, precum
la o aplicație obișnuită și fără necesitatea vreunui mediu de dezvoltare sau un modul special.
6
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
6. Autoconfigurare
6.1. General
În mod implicit, Spring boot folosește un mecanism de autoconfigurare pentru aplicație în
dezvoltare. Aceasta este bazată pe arhivele jar ți clasele definite în classpath.
Spring Boot folosește informațiile găsite în classpath pentru a își face o opinie despre cum ar trebui
să configureze anumite comportamente în mod automat. Astfel, obiectele găsite produc o imagine a
cum Spring Boot trebuie să se configureze pe el însuși.
Principalul atuu al Spring Boot se află în spatele adnotării @EnableAutoConfiguration. Care caută
și încarcă automat toate obiectele sau compenentele de care aplicația are nevoie ținând cont de ce
Spring-ul găsește în classpath.
Adnotările @Enable* nu sunt noi, acestea au fost introduse în versiunea 3 de Spring în ideea de a
înlocui fișierel XML cu clase java.
Printre cele mai populare adnotări de acest tip se află @EnableTransactionManagement care
activează managementul pentru tranzacții, @EnableMVC care activează Spring MVC sau
@EnableScheduling care inițializează un programator (timer).
În esență, aceste adnotări sunt de fapt simple importuri de configurare folosind @Import, după cum
se poate vedea în exemplul de mai jos.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({ EnableAutoConfigurationImportSelector.class,
AutoConfigurationPackages.Registrar.class })
public @interface EnableAutoConfiguration {
/** * Exclude specific auto-configuration classes such that they will never
be applied. */
Class<?>[] exclude() default {};
}
7
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingIni
tializer
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.data.JpaRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.redis.RedisAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConf
iguration,\
org.springframework.boot.autoconfigure.jms.JmsTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoTemplateAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\
org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfigura
tion,\
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfigura
tion,\
org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguratio
n,\
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration
Listing 3. Conținut spring-boot-autoconfigure
8
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
@ConfigurationProperties(prefix = "spring.data.mongodb")
public class MongoProperties {
6.4. ApplicationContextInitializer
O altă caracteristică a fișierului spring.factories reprezintă posibilitatea de a defini inițializatori de
aplicație. Aceștia permit manipularea conextului aplicației Spring înainte ca aceasta din urmă să fie
încărcată.
Mai în detaliu, inițializatorii de aplicație creează listeneri prin metoda
ConfigurableApplicationContext#addApplicationListener. Spring Boot face acest lucru în
AutoConfigurationReportLoggingInitializer care ascultă la evenimentele de sistem cum ar fi
reîmprospătarea contextului aplicației sau eșecul la pronire a aplicației. Acest procesfacilitează
creearea unui raport al autoconfigurării atunci când aplicația este rulată în modul depanare. Pornirea
aplicației în diferite moduri se poate face prin argumentul –Ddebug sau prin proprietatea
debug=true din fișierul application.properties.
9
Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Sisteme Avansate în Automatică și
Departamentul Automaticăşi Tehnologia Informaţiei Tehnologii Informatice
7. Concluzii
Abordarea Spring Boot facilitează creearea de aplicații executabile jar care dispun de un mecanism
de autoconfigurare.
De asemenea, urmând documentația se pot înlocui gradual clasele de autoconfigurare cu clase de
configurare personalizate.
Spring Boot permite realizarea de prototipuri de aplicație foarte rapid, dar totodată avand control
asupra codului. Pornind de la metodele de autoconfigurare se poate evolua și personaliza o aplicație.
10