Spring 3.0中配置数据源

发布于 2024-12-01 11:40:20 字数 688 浏览 0 评论 0 原文

大家好,我已经在 glassfish 2.1 中配置了连接池和 JNDI 资源。我可以在我的项目中通过查找方法获取数据源,一切正常。不过,我决定尝试 Spring 框架并使用我现有的连接池。

在 Spring 上下文文件中,我有以下内容:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/name" />
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
    <constructor-arg ref="dataSource"/>
</bean>
<bean id="dao" class="com.mycompany.mavenproject3.Dao">
    <property name="simpleJdbcTemplate" ref="jdbcTemplate"/>
</bean> 

当我部署项目时,我得到:

java.lang.IllegalArgumentException:需要“dataSource”或“jdbcTemplate”]

为了获取数据源,我还必须在该文件或任何其他文件中配置其他内容吗?

Hello guys I have configured a connection pool and JNDI resource in glassfish 2.1. I can get the Datasource via lookup method in my projects and everything works good. However I decided to try Spring framework and to use my existing connection pool.

In the Spring context file I have the following:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/name" />
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
    <constructor-arg ref="dataSource"/>
</bean>
<bean id="dao" class="com.mycompany.mavenproject3.Dao">
    <property name="simpleJdbcTemplate" ref="jdbcTemplate"/>
</bean> 

When I deploy the project I get:

java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required]

Is there anything else I have to configure in that file or in any other file in order to get the Datasource?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倾听心声的旋律 2024-12-08 11:40:20

据推测, com.mycompany.mavenproject3.Dao 扩展 JdbcDaoSupport,但是您在其上设置了一个名为 simpleJdbcTemplate 的属性,这让我相信您已经定义您自己的属性来保存模板,因为 Spring 的实现中不存在该属性。因此,它向您抱怨,因为您需要设置 dataSource 属性JdbcDaoSupport 对象的 jdbcTemplate 属性,然后使用它,就像它一样告诉你。将 更改为

如果您的 DAO 不扩展 JdbcDaoSupport,则查找扩展 JdbcDaoSupport 的内容并将其删除或适当地设置其属性。

Presumably, com.mycompany.mavenproject3.Dao extends JdbcDaoSupport, but you're setting a property named simpleJdbcTemplate on it, leading me to believe that you've defined your own property to hold the template since that doesn't exist on Spring's implementation. It's therefore complaining at you because you're required to set either the dataSource property or the jdbcTemplate property of the JdbcDaoSupport object before using it, exactly like it's telling you. Change <property name="simpleJdbcTemplate"... to <property name="jdbcTemplate"....

If your DAO doesn't extend JdbcDaoSupport, then find what does and remove it or set its properties appropriately.

情绪少女 2024-12-08 11:40:20

您还可以直接在 dao bean 中调用数据源,不需要为 jdbcTemplate 执行另一个 bean。所以你的上下文文件变成这样:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/name" />
<bean id="dao" class="com.mycompany.mavenproject3.Dao">
        <property name="dataSource" ref="dataSource"/>
</bean>

在你只需要在你的 Dao 类上扩展 JdbcDaoSupport spring 类(其中包含数据源的 getter 和 setter)之后。

You can also call your datasource directly in your dao bean, don't need to do an another bean for jdbcTemplate. So your context file become something like this:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/name" />
<bean id="dao" class="com.mycompany.mavenproject3.Dao">
        <property name="dataSource" ref="dataSource"/>
</bean>

After you just have to extends JdbcDaoSupport spring class (in which contain the getter and setter of datasource) on your Dao class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文