在Spring 3.0中配置数据源

时间:2011-08-25 21:36:15

标签: spring glassfish

大家好我已经在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'是必需的]

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

2 个答案:

答案 0 :(得分:2)

据推测,com.mycompany.mavenproject3.Dao扩展了JdbcDaoSupport,但你正在设置一个名为simpleJdbcTemplate的属性,让我相信你已经定义了自己的属性来保存模板,因为那样做在Spring的实现中存在。因此,它会向您抱怨,因为您需要在使用之前设置JdbcDaoSupport对象的dataSource propertyjdbcTemplate property,就像它告诉您的那样。将<property name="simpleJdbcTemplate"...更改为<property name="jdbcTemplate"...

如果你的DAO没有扩展JdbcDaoSupport,那么找到什么做,然后删除它或者适当地设置它的属性。

答案 1 :(得分:1)

您也可以直接在您的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)之后。