Spring 3.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”]
为了获取数据源,我还必须在该文件或任何其他文件中配置其他内容吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
据推测, 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.
您还可以直接在 dao bean 中调用数据源,不需要为 jdbcTemplate 执行另一个 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:
After you just have to extends JdbcDaoSupport spring class (in which contain the getter and setter of datasource) on your Dao class.