spring注解nullpointerexception

来源:互联网 发布:查自己淘宝的虚假交易 编辑:程序博客网 时间:2024/05/22 03:43

在applicationContext.xml中定义了sqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property><property name="mapperLocations" value="classpath:mapper/*.xml"></property></bean>

定义一个Search类用于查询操作,希望通过注解的方式注入sqlSessionFactory

public class Search {@AutowiredSqlSessionFactory sqlSessionFactory;public void search(){SqlSession session = sqlSessionFactory.openSession();UserDao u=session.getMapper(UserDao.class);User user=u.getUser(1);System.out.println(user.getName());}}
定义一个Test类进行查询

public class Test {public static void main(String[] args){Search search=new Search();search.search();}}
报空指针异常。

分析:这里直接使用了new 出一个Search的方式,那这个对象肯定不是收到spring容器管理的。这样子的话,spring容器又怎么能把sqlSessionFactory注入到你这个对象中呢?

所以正确的写法是这样子。

<bean id="search" class="com.kiruma.blog.dao.Search"></bean>

先在spring容器中定义出search ,然后在Test中启动容器,获取search, 这样才能实现自动装配。

public class Test {public static void main(String[] args){@SuppressWarnings("resource")ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Search search=(Search) context.getBean("search");search.search();}}