刚开始学习spring,今天写一个非常简单的事务demo 竟然发现注入对象时一直不断的出现空指针异常,打印出来,发现jdbcTemplate都是空的。检查了一上午 不知道到底哪里出了问题,于是从spring最开始ioc开始 一步一步的回忆各个方面,也好让以后如果再有遗忘方便查阅。
一个简单的ioc例子:
UserDao类:
public interface UserDao {
public void add();
}
UserDaoImpl类:
public class UserDaoImpl implements UserDao{
public void add() {
// TODO Auto-generated method stub
System.out.println("add");
}
}
applicationContext.xml:
<?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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="userDao" class="zk.UserDaoImpl"/>
</beans>
测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Springtest {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Test
public void demo1() {
System.out.println(userDao);
userDao.add();
}
}
把以前需要自己new对象这个过程交给了 spring去完成,在applicationContext.xml中配置好对象类
比如这里的applicationContext.xml中有如下配置
<bean id="userDao" class="zk.UserDaoImpl"/>
把zk包下的UserDaoImpl类的创建交给spring
所以测试类里不用再new UserDaoImpl了。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(“classpath:applicationContext.xml”)
这个注解是来加载配置文件
分清概念Ioc和DI:
IOC:控制反转:将对象的创建权,由Spring管理.
DI:依赖注入:在Spring创建对象的过程中,把对象依赖的属性注入到类中.