----------spring配置文件----------------<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="configLocation" value="classpath:mybatis.xml" />
</bean>

<bean id="mapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.insigma.mappers.Mapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<bean id="smapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.insigma.mappers.SMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<bean id="test" class="com.insigma.test.Tes">
<property name="mapper" ref="mapper">
</property>
<property name="id" value="12"></property>
</bean></beans>  ----------mybatis配置文件----------------
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration> <typeAliases>
<typeAlias type="com.insigma.model.Student" alias="student" />
</typeAliases>

<mappers>
<mapper resource="com/insigma/mappers/Mapper.xml" />
<mapper resource="com/insigma/mappers/SMapper.xml" />
</mappers>
</configuration>----------mapper配置文件----------------
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper 
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.insigma.mappers.Mapper"> <select id="getAll" resultType="student">
select * from student2 
</select></mapper> ----------mapper接口----------------
package com.insigma.mappers;import java.util.List;import org.springframework.stereotype.Component;import com.insigma.model.Student;public interface Mapper { public List<Student> getAll();
}
----------Student 类----------------
package com.insigma.model;public class Student { private int id;

private String name; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}

}
----------测试代码----------------
public static void main(String[] args) {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); System.out.println(context.getBean("myDataSource"));
System.out.println(context.getBean("sqlSessionFactory"));

System.out.println(context.getBean("mapper"));
         System.out.println(context.getBean("test"));

}----------测试结果----------------
org.apache.commons.dbcp.BasicDataSource@19e8f17
org.apache.ibatis.session.defaults.DefaultSqlSessionFactory@c44b88
null
com.insigma.test.Tes@17e121c----------问题----------------所有配置都好像没错 为什么System.out.println(context.getBean("mapper"))输出null ??? 在线求解 

解决方案 »

  1.   

    还真是这样,我用我以前写的例子,这么操作就会出错。但是获取出来直接使用或者注入到其他的bean内,都没问题。感觉mapper并没有被实例化!别在这里纠缠了。我的代码片段如下:          ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "spring.xml" });        BeanFactory factory = (BeanFactory) context;
             IMybatisDao dao = (IMybatisDao) factory.getBean("mybatisDao");
            //下面这行的方法可以正常执行
            System.out.println(dao.selectOne("20110101"));
            //这里就是打印不出来,抛空指针异常
            System.out.println(dao);