大家好我已经在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'是必需的]
为了获取数据源,我还需要在该文件或任何其他文件中配置其他内容吗?
答案 0 :(得分:2)
据推测,com.mycompany.mavenproject3.Dao扩展了JdbcDaoSupport,但你正在设置一个名为simpleJdbcTemplate的属性,让我相信你已经定义了自己的属性来保存模板,因为那样做在Spring的实现中存在。因此,它会向您抱怨,因为您需要在使用之前设置JdbcDaoSupport对象的dataSource property或jdbcTemplate 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)之后。