home
Spring core cheat sheet
Container, Dependency and IOC
print

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;

Factory beans

Spring container

Tests

Column 2

an exemple

public class Test extends AbstractTest implements ITest {

  public Test() {
    System.out.println("Un test");
  }
}

Pour aller plus loin