我在Spring in Action中读到,设置JDBCTemplate的好方法是在Spring配置文件中添加它:
<jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/AOICMainDB" expected-type="javax.sql.DataSource" />
<bean id="jdbcTemplateDB2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dbDataSource" />
</bean>
这是有道理的,现在我们可以在DAO中自动装配jdbcTemplateDB2并用它做jdbcTemplate。
但我如何使用java配置文件设置它?具体来说,我不确定jee:namespace如何转换为java confg。
答案 0 :(得分:0)
您的问题应该是:谁在运行将数据源提供给我的应用程序的JNDI服务?
如果您的应用程序未在具有JNDI服务的Java EE应用服务器上运行,则答案为“无人”。在这种情况下,您应该使用DriverManager
数据源。
如果您的应用程序确实在可用JNDI服务的Java EE应用服务器上运行,您必须知道如何在池中设置数据源。
答案 1 :(得分:0)
jee:jndi-lookup只是JndiObjectFactoryBean的语法糖。
spring文档提供了一个前后示例,如下所示:
之前...
<bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/MyDataSource"/>
</bean>
在...
<jee:jndi-lookup id="simple" jndi-name="jdbc/MyDataSource">
</jee:jndi-lookup>
现在要将其转换为java配置,您需要执行以下操作:
@Bean
public JndiObjectFactoryBean simple() {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("jdbc/MyDataSource");
return bean;
}
然后你可以从bean中检索jndi对象。
参考文献:
免责声明:必须运行public void afterPropertiesSet()来填充jndi对象。