在Spring javadoc文章中有关于DriverManagerDataSource类的说法,这个类非常简单并且推荐使用
使用容器提供的JNDI DataSource。这样的DataSource可以通过JndiObjectFactoryBean在Spring ApplicationContext中作为DataSource bean公开
问题是:如何做到这一点?
例如,如果我希望DataSource bean访问我的custo oracle数据库,那么我需要什么呢?在上下文配置等中写什么?
答案 0 :(得分:4)
要访问JNDI数据源,请执行以下操作:
<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/MyDatabase"/>
</bean>
或者看看春天'jee'架构。
数据库连接的详细信息在WebLogic中配置,应用程序访问 数据库通过jndi名称。
答案 1 :(得分:2)
或者使用基于Java的配置并按照以下方式执行:
@Bean(destroyMethod = "")
public DataSource dataSource() throws NamingException{
Context context = new InitialContext();
return (DataSource)context.lookup("jdbc.mydatasource");
}
答案 2 :(得分:1)
还有另一种选择:
<jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/MyLocalDB"
expected-type="javax.sql.DataSource" />
答案 3 :(得分:0)
您可以使用以下jndi配置。
<beans:bean id="weblogicDataSource" class="org.springframework.remoting.rmi.JndiRmiProxyFactoryBean">
<beans:property name="jndiName" value="ConnectionPoolJNDINameAsConfigured"></beans:property>
<beans:property name="jndiEnvironment">
<beans:props>
<beans:prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</beans:prop>
<beans:prop key="java.naming.provider.url">iiop://localhost:7001</beans:prop>
</beans:props>
</beans:property>
<beans:property name="serviceInterface" value="javax.sql.DataSource"></beans:property>
</beans:bean>
并将您注入的类文件引用为
<beans:bean id="xxxx" class="xxxxxxxx">
<beans:property name="wlDataSource" ref="weblogicDataSource" />
</beans:bean>
在您的实施课程中,使用
import javax.sql.DataSource;
将实例设为 private DataSource wlDataSource;
和相应的setter。现在您可以根据您的实现思路自由使用JDBCTemplate或SimpleJDBCCall等。