Comment utiliser par programme du Printemps JdbcTemplate?
Nous utilisons du Printemps JdbcTemplate
qui est configuré par le biais de Printemps config comme illustré ci-dessous. Est-il un moyen de le faire sans l'injection de la source de données? Je voudrais juste créer le JdbcTemplate
instance par programme et "initalize" la source de données à l'aide de TheOracleDS
.
Notre config actuelle:
Classe Java
private JdbcTemplate jdbcTemplate;
@Resource(name = "myDataSource")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
Printemps config
<jee:jndi-lookup id="myDataSource" jndi-name="java:/TheOracleDS"/>
Source de données Oracle config
<xa-datasource>
<jndi-name>TheOracleDS</jndi-name>
...
</xa-datasource>
Mise à jour: Pourquoi je vous pose cette question c'est que je ne suis pas un total croyant en l'injection de dépendances /avoir le Printemps de gérer les haricots..
- La vraie question est: pourquoi est-injection pas souhaitable ici? Qu'est-ce que le fais de la façon dont vous êtes en proposant l'achat vous?
- Je suis allé la non-injection de route avant avec Spring JDBC, mais seulement pour l'utilité des classes où je tiens juste à exécuter une méthode main pour vérifier quelque chose dans la base de données. Dans ce cas, l'écriture d'un fichier XML et de la recherche il ne semble un peu exagéré. Cependant, une fois que JNDI est dans le mélange, il semble comme il n'est pas vraiment un cas à éviter l'utilisation de l'injection.
Vous devez vous connecter pour publier un commentaire.
Il suffit d'utiliser un raw recherche JNDI:
Ne savez pas pourquoi vous voulez faire ça, mais... vous pourriez la recherche de la JDNI source de données avec le Printemps
JndiDataSourceLookup
:Ou tout simplement effectuer un "manuel" de recherche à l'aide du Soleil classes:
Ensuite, il suffit de passer la source de données de référence pour la
JdbcTemplate
constructeur ou l'appelsetDataSource(ds)
.Mais, comme je l'ai dit, je n'ai aucune idée pourquoi vous ne voulez pas utiliser l'injection.
Voici un exemple de code à partir d'un projet que j'ai écrit:
Peut-être que mon code serait plus simple si j'ai utilisé l'injection, mais c'est un bon exemple de comment le faire sans l'aide de l'injection.
Vous pouvez utiliser un
org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup
objet à trouver la source de données que vous voulez par JDNI nom.