Les properties

Placer les properties dans resources/application.properties.

Ne précisez pas les quotes au niveau des valeurs, sinon cela va rajouter des quotes à la valeur.

Dans la classe de test, pour que le fichier application.properties soit prise en compte et qu'il soit possible d'injecter @Value : @ContextConfiguration(initializers = { ConfigFileApplicationContextInitializer.class })

SQL

Dans la requête SQL, il est possible de préciser le nom de tous les champs à récupérer ou bien d'utiliser l'étoile *

Créez une classe de configuration SQL :

  • Activer les transactions avec @EnableTransactionManagement
  • Spring Data : Indiquer l'existence des classes Entity et Repository avec @EnableJpaRepositories

Creation of SQL Sequences

CREATE SEQUENCE sequence_products;
CREATE SEQUENCE sequence_themes;
CREATE SEQUENCE sequence_tags;

ALTER TABLE products ALTER COLUMN id SET DEFAULT nextval('sequence_products');
ALTER TABLE themes ALTER COLUMN id SET DEFAULT nextval('sequence_themes');
ALTER TABLE tags ALTER COLUMN id SET DEFAULT nextval('sequence_tags');

DataSource

Deux moyens d'initialiser un datasource, en utilisant @ConfigurationProperties et DataSourceBuilder :

@Bean
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

Ou bien en utilisant l'implémentation HikariDataSource :

@Bean
public DataSource dataSource(
    @Value("${spring.datasource.url}") String jdbcUrl,
    @Value("${spring.datasource.username}") String username,
    @Value("${spring.datasource.password}") String password,
    @Value("${spring.datasource.driver-class-name}") String driverClassName
) {
    HikariConfig config = new HikariConfig();
    config.setJdbcUrl(jdbcUrl);
    config.setUsername(username);
    config.setPassword(password);
    config.setDriverClassName(driverClassName);
    return new HikariDataSource(config);
}

Spring MVC

La variable server.servlet.context-path ne devrait pas impacter les tests.

Autre

Démarrer le serveur PostgreSQL sous Windows: pg_ctl -D "C:/opt/postgresql/11/data" start

Configuration Spring JPA : https://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html

En cours (à ne pas prendre en compte) : Penser à ajouter l'annotation @EnableConfigurationProperties pour activer l'injection de properties via @Value