Spring JDBC permet de spécifier dans les propriétés fichier pour PROD:Différentes usines de connexion JMS instanciation via le nom du pilote et URL
jdbc.driverClassName = oracle.jdbc.OracleDriver
jdbc.url = jdbc:oracle:thin:@...
et pour les tests
jdbc.driverClassName = org.h2.Driver
jdbc.url = jdbc:h2:mem:test;INIT=...
Ainsi, il est possible d'instancier nécessaire java.sql.DataSource
instance dépend des paramètres de configuration avec le code générique
@Bean
public DataSource dataSource(
@Value("${jdbc.driverClassName}") String driverClass,
@Value("${jdbc.url}") String url,
@Value("${jdbc.username}") String username,
@Value("${jdbc.password}") String password
) {
DriverManagerDataSource dataSource = new DriverManagerDataSource(url, username, password);
dataSource.setDriverClassName(driverClass);
return dataSource;
}
-il possible à Spring de configurer le type spécifique de java.jms.ConnectionFactory
via les propriétés des pilotes et des propriétés d'URL comme dans Spring JDBC?
En fait, mon objectif est d'utiliser la fabrique de connexions Tibco pour PROD et ActiveMQ pour les tests.
C'est exactement ce que nous faisons. Mais maintenant je voudrais avoir une solution plus flexible. –
Plus flexible de quelle façon? Vous pouvez créer un bean factory simple pour renvoyer une implémentation différente en fonction d'une valeur de propriété. Mais cela me semble trop compliqué. –
Notre application est une sorte de boîte noire avec config dans les propriétés. Pour mettre en œuvre des tests de bout en bout, il est bon d'avoir la possibilité de changer les implémentations infra avec seulement des changements de fichiers de propriétés. –