在dataSrouce的Java Spring bean配置中,我尝试定义init和destroy属性,这些属性调用我的mysql脚本作为单元测试的初始化和清理,如下所示:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="destroy" init-method="init">
<property name="destroy">
<value>classpath: mysql_dropuser.sql</value>
</property>
<property name="init">
<value>classpath: mysql_createuser.sql,classpath: mysql_bootstrap.sql</value>
</property>
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8" />
</bean>
但是我得到了错误:
Invalid property 'destroy' of bean class.
我的问题是如何在xml文件中定义init和destroy方法?
答案 0 :(得分:1)
好像你已经定义了init / destroy方法(它们是通过相应的属性指定的)。并且您还应该在类中使用公共的void无参数方法。属性有点不同;像往常一样,它们被视为私有领域和公共获取/设置方法的组合。所以在你的情况下,至少需要setter方法public void setDestroy(String str)
。请检查您的bean课程以满足这些约定。您也可以寻找弹簧资源&#39; (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/Resource.html)注入,因为您正在尝试向您的bean提供文件路径。
答案 1 :(得分:1)
这就是我之前做过的事情,希望这会有所帮助:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdb" />
<property name="username" value="testuser" />
<property name="password" value="testuser" />
<property name="initialSize" value="5" />
<property name="maxActive" value="20" />
<property name="maxIdle" value="20" />
<property name="maxWait" value="5000" />
</bean>
<jdbc:initialize-database data-source="dataSource" ignore-failures="ALL">
<jdbc:script execution="INIT" location="classpath:database/schemas/create_testdb.sql" />
<jdbc:script execution="INIT" location="classpath:database/schemas/add_testdata.sql" />
<jdbc:script execution="DESTROY" location="classpath:database/schemas/drop_testdb.sql" />
</jdbc:initialize-database>