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

setting up JDBCTemplate in Spring using java configuration file

我在 Spring 中读到,设置 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: 命名空间如何转换为 java confg.

您的问题应该是:谁在 运行 提供将数据源提供给我的应用程序的 JNDI 服务?

如果您的应用程序没有 运行 在具有可用 JNDI 服务的 Java EE 应用程序服务器上,答案是 "No one." 您应该使用 DriverManager 数据在这种情况下来源。

如果您的应用程序在 Java EE 应用程序服务器上 运行 并提供可用的 JNDI 服务,您必须知道如何在池中设置数据源。

jee:jndi-查找只是 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 对象。