Spring 5.x - Date : Août 2018
Qu'est-ce que Spring ?
- Open source (Licence Apache 2, sources sur github)
- Léger
- N'oblige pas d'utiliser un serveur applicatif
- N'est pas invasif
- Conteneur
- Les objets de l'application n'ont pas besoin de chercher à se connecter aux autres
- Gère le cycle de vie des objets
- Framework
- Facilite l’intégration et la communication avec des librairies tiers
Dépendance minimale
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
Configuration d'une appli
- Java
- Annotations
- XML (toujours possible mais verbeux)
@ComponentScan("fr.sii.cheatsheet.spring")
public class MyApp {
public static void main(String[] args) {
ApplicationContext app = new AnnotationConfigApplicationContext(MyApp.class);
DummyService helloWorld = app.getBean(DummyService.class);
helloWorld.getMessage();
}
}
Préférez l'utilisation d'une classe de configuration
@Configuration
public class MyAppConfig {
// @Bean, ...
}
Injection de dépendances
Définir un bean : @Bean
@Configuration
public class MyAppConfig {
@Bean
public DummyService dummyService(){
return new DummyServiceImpl();
}
}
Définir un bean : @Component
Spécialisations @Component : @Service, @Repository et @Controller
@Component
public class DummyServiceImpl {
}
Injection de dépendance : @Autowired
- Via une propriété de classe
- Via un setter
- Via le constructeur (à préférer pour faciliter de test)
@Component
public class FooServiceImpl {
@Autowired
private DummyService service;
}
Les propriétés
@Configuration
@PropertySource("classpath:foo.properties")
public class MyAppConfig {
// Fichier 'foo.properties' chargé par Spring
}
Utiliser une propriété : @Value("${message}")
@Value("${message:Message par défaut}")
private String message;