今儿这个问题让我着实纠结了一把,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的深层次含义。


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐