今儿这个问题让我着实纠结了一把,spring和ibatis整合的配置文件都配好了,然后运行报错,错误很简单就是返回值为空,让我百思不得其解。最后终于明白了,原来是我测试的实现类是java文件,而非java web程序,可笑的是我按照书本上的配置方法在web.xml中将自动加载spring的listenter还有spring的配置文件都配了,岂不知没有发布工程,没有tomcat的容器,web.xml的配置没有办法被读取到,导致配置的文件作废。只好重新在写一个配置文件了。也就是说在我的这个测试中spring没有起到多大的作用。
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
SqlMapClient sqlMapClient2=(SqlMapClient) ctx.getBean("sqlMapClient");
spring的applicationContext.xml的配置:
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation">
<value>
classpath:SqlMapConfig.xml
</value>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://10.5.110.239:3306/test">
</property>
<property name="username" value="root"></property>
<property name="password" value="chen"></property>
</bean>
Spring为ApplicationContext提供的三种方式
ClassPathXmlApplicationContext 这个我们使用了
FileSystemXmlApplicationContext
XmlWebApplicationContext
其中 XmlWebApplicationContext是专为Web工程定制的。使用举例如下:
//加载多个文件
String[] Local={"classpath:applicationContext.xml"};
//这是放在src下,所以用classpath: 当然你也可以不用
第一种方式
ApplicationContext context=new FileSystemXmlApplicationContext(Local);
第二种方式
context= new ClassPathXmlApplicationContext(Local);
这两种方式一般用于在Action中或者Manager中获得其他的Manager
第三种方式:这个我们也使用了,可是这是在web工程中的使用方法,必须先由tomcat来管理加载才行呢。
在web.xml中配置
配置监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
配置监听器监听的xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
Ibatis的SqlMapClient.xml只是存放了sql与POJO的映射文件:
<sqlMapConfig>
<!-- <properties resource="SqlMap.properties"/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property value="${driver}" name="JDBC.Driver"/>
<property value="${url}" name="JDBC.ConnectionURL"/>
<property value="${username}" name="JDBC.Username"/>
<property value="${password}" name="JDBC.Password"/>
</dataSource>
</transactionManager>
-->
<sqlMap resource="com/ncut/map/user.xml"/>
<sqlMap resource="com/ncut/map/teacher.xml"/>
<sqlMap resource="com/ncut/map/course.xml"/>
<sqlMap resource="com/ncut/map/class.xml"/>
<sqlMap resource="com/ncut/map/student.xml"/>
</sqlMapConfig>
好了,继续努力吧,好好的理解SSI和SSH的深层次含义。