使用java配置文件在Spring中设置JDBCTemplate

时间:2015-10-08 13:31:24

标签: spring spring-jdbc jdbctemplate

我在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。

2 个答案:

答案 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对象。

参考文献:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/xsd-configuration.html#xsd-config-body-schemas-jee-jndi-lookup-environment-single

免责声明:必须运行public void afterPropertiesSet()来填充jndi对象。