Nous utilisons Notre configuration actuelle: p> Classe Java EM> P> jdbCtemplate code> qui est configuré via Spring config, comme illustré ci-dessous. Existe-t-il un moyen de le faire sans injecter la source de données? J'aimerais simplement créer le
jdbctemplate code> instance programmatique et "initaliser" l'accès de données à l'aide de
théoraclées code>.
<xa-datasource>
<jndi-name>TheOracleDS</jndi-name>
...
</xa-datasource>
3 Réponses :
Voici quelques échantillons de code d'un projet que j'ai écrit: Peut-être que mon code serait plus simple si j'avais utilisé l'injection, mais c'est un bon exemple de comment faire cela sans utiliser injection. p> vous pouvez utiliser un org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup code> pour trouver la source de données que vous voulez par nom JDNI. p>
DataSource dataSource = new JndiDataSourceLookup().getDataSource("java:/TheOracleDS")
SimpleJdbcTemplate db=new SimpleJdbcTemplate(dataSource);
Je ne sais pas pourquoi vous voulez faire cela, mais ... vous pouvez rechercher le jeu de données JDNI avec le printemps ou tout simplement effectuer un "manuel" Recherche à l'aide de classes de Soleil: p> Ensuite, passez simplement la référence de DataSource au Mais, comme je l'ai dit, je ne sais pas pourquoi vous ne voulez pas utiliser l'injection. p> p> jndidatasourcelook code>:
JDBCTemplate Code> constructeur ou appelez
setdataSource (DS) code >. P>
Utilisez simplement une recherche JNDI brute:
public void setDataSourceName(String name) { InitialContext ctx = new InitialContext(); jdbcTemplate = new JdbcTemplate((DataSource) ctx.lookup(name)); }
La vraie question est la suivante: pourquoi l'injection n'est-elle pas souhaitable ici? Qu'est-ce qui le fait comme vous proposez de vous acheter?
Je suis allé l'itinéraire non-injection avant avec Spring JDBC, mais uniquement pour les classes utilitaires où je veux juste exécuter une méthode principale pour vérifier quelque chose dans la base de données. Dans ce cas, la rédaction d'un XML et le regardant semble un peu trop excitée. Cependant, une fois que JNDI est dans le mélange, il semble que l'on n'ait vraiment pas un cas pour éviter d'utiliser une injection.