5

Spring javadoc中关于DriverManagerDataSource类的文章中说,这个类很简单,推荐

使用容器提供的 JNDI 数据源。这样的 DataSource 可以通过 JndiObjectFactoryBean 暴露为 Spring ApplicationContext 中的 DataSource bean

问题是:如何做到这一点?

例如,如果我希望 DataSource bean 访问我的 custo oracle 数据库,那么我需要什么?在上下文配置等中写什么?

4

4 回答 4

4

要访问 JNDI 数据源,您可以执行以下操作:

<bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDatabase"/>
</bean>

或者看看春天的'jee'模式。

数据库连接的细节在WebLogic中配置,应用程序通过jndi名称访问数据库。

于 2012-12-03T23:29:27.650 回答
3

或者使用基于 Java 的配置并这样做:

@Bean(destroyMethod = "")
public DataSource dataSource() throws NamingException{
    Context context = new InitialContext();
    return (DataSource)context.lookup("jdbc.mydatasource");
}
于 2013-10-11T17:13:08.753 回答
1

还有另一种选择:

<jee:jndi-lookup id="dbDataSource" jndi-name="jdbc/MyLocalDB"
        expected-type="javax.sql.DataSource" />
于 2016-04-07T19:05:15.557 回答
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;

将实例作为私有 DataSource wlDataSource;

和相应的二传手。现在您可以根据自己的实现思路自由使用 JDBCTemplate 或 SimpleJDBCCall 等。

  • 希望这会有所帮助。
于 2016-08-24T12:58:21.657 回答