刚到新的公司,新的系统,新的框架,慢慢熟悉之后,很多问题不顺手。
系统的配置文件布局类似于spring官网JPetstore应用,看过代码的人一定清楚它的布局:
同时,spring为了顺利加载jdbc.properties/sql-map-config.xml,需要在applicationContext.xml调整一下路径
其实这样存放配置文件的路径没有什么大碍,至少在Web Server上运行是没问题的。
测试类继承DaoTestBase,编写测试代码
但这种方式,问题2是解决不了的。除非手工修改 applicationContext.xml/ dataAccessContext-local.xml 中的路径。
每次从cvs获取文件或本地修改spring/ibatis配置文件后,运行当前ant文件。
然后任意的运行你的测试类
运行Oracle速度慢,且受数据库记录影响。所以下一步是加入hsql。
- 配置信息
系统的配置文件布局类似于spring官网JPetstore应用,看过代码的人一定清楚它的布局:
xml 代码
- -jpetstore
- -WEB-INF
- applicationContext.xml
- dataAccessContext-local.xml
- jdbc.properties
- sql-map-config.xml
同时,spring为了顺利加载jdbc.properties/sql-map-config.xml,需要在applicationContext.xml调整一下路径
xml 代码
- <!-- spring加载ibatis配置文件时的路径设置 -->
- <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
- <property name="configLocation" value="WEB-INF/sql-map-config.xml"/>
- <property name="dataSource" ref="dataSource"/>
- </bean>
其实这样存放配置文件的路径没有什么大碍,至少在Web Server上运行是没问题的。
- 搭建测试框架
java 代码
- public class DaoTestBase extends AbstractTransactionalDataSourceSpringContextTests {
- protected String[] getConfigLocations() {
- return new String[] {
- "classpath*:applicationContext.xml",
- "classpath*:dataAccessContext-local.xml",
- "classpath*:applicationContext-test.xml" };
- }
- }
测试类继承DaoTestBase,编写测试代码
java 代码
- public class MyDaoTest extends DaoTestBase {
- private MyDao myDao;
- public void testCRUD() {
- // your test code here
- }
- public void setMyDao(MyDao myDao) {
- this.myDao= myDao;
- }
- }
- 问题
- 运行MyDaoTest 时,提示applicationContext.xml/dataAccessContext-local.xml加载不到。这时候手工将applicationContext.xml/dataAccessContext-local.xml拷贝到classpath目录,文件是加载到了。
- 但是在applicationContext.xml/dataAccessContext-local.xml文件中加载jdbc.properties/sql-map-config.xml时,又存在路径问题了。
java 代码
- private static URL appURL = ServiceTestBase.class.getClassLoader().getResource("");
但这种方式,问题2是解决不了的。除非手工修改 applicationContext.xml/ dataAccessContext-local.xml 中的路径。
- 解决办法
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <project name="project-name" default="edit">
- <property name="src.dir" value="WebRoot/WEB-INF" />
- <property name="dist.dir" value="WebRoot/WEB-INF/classes" />
- <property name="spring.xml" value="applicationContext.xml" />
- <property name="spring-db.xml" value="dataAccessContext-local.xml" />
- <property name="ibatis.xml" value="sql-map-config.xml" />
- <target name="clean" description="删除dist目录下目标文件">
- <delete file="${dist.dir}/${spring.xml}" />
- <delete file="${dist.dir}/${spring-db.xml}" />
- <delete file="${dist.dir}/${ibatis.xml}" />
- </target>
- <target name="copy" depends="clean" description="拷贝源文件到目标目录">
- <copy file="${src.dir}/${spring.xml}" tofile="${dist.dir}/${spring.xml}" encoding="utf-8" />
- <copy file="${src.dir}/${spring-db.xml}" tofile="${dist.dir}/${spring-db.xml}" encoding="utf-8" />
- <copy file="${src.dir}/${ibatis.xml}" tofile="${dist.dir}/${ibatis.xml}" encoding="utf-8" />
- </target>
- <target name="edit" depends="copy" description="修改目标文件的内容">
- <replace file="${dist.dir}/${spring.xml}" token="WEB-INF/classes/jdbc.properties" value="jdbc.properties" encoding="utf-8" />
- <replace file="${dist.dir}/${spring-db.xml}" token="WEB-INF/sql-map-config.xml" value="classpath:sql-map-config.xml" encoding="utf-8" />
- </target>
- </project>
每次从cvs获取文件或本地修改spring/ibatis配置文件后,运行当前ant文件。
然后任意的运行你的测试类
运行Oracle速度慢,且受数据库记录影响。所以下一步是加入hsql。