控制反转(IoC),是Spring里一个专有的名词,其意思就是说,对象的实例由Spring容器来进行创建而不是我们自己手动创建,当我们在Spring容器中设定好Bean属性后,Spring容器就会自动创建其实例,我们只要去调用Spring的Bean就行。
接下来是例子:
首先,我们创建一个接口和一个接口的实现类
public interface UserDao {
public void say();
}
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("Hello Ioc");
}
}
接着,当我们要用这个接口的时候,正常情况下是这样的
public class TestIoc {
public static void main(String[] args) {
UserDao userDao = new UserDaoImpl(); //需要我们主动去new一个对象
userDao.say();
}
}
而在用了Spring之后,Spring提供了两个注释,分别是@Autowired和@Resource。以及,@Service注释。具体用法如下:
@Service
public class UserDaoImpl implements UserDao {
@Override
public void say() {
System.out.println("Hello Ioc");
}
}
main函数里这样用
public class TestIoc {
@Autowired
UserDao UserDao;
public static void main(String[] args) {
userDao.say();
}
}
以上,就是Spring的控制反转,读者可能会问,有什么不一样呀,我不还是一样定义了UserDao,只是加了个注释而已。
从上面我们可以看出,UserDao其实已经被Spring容器代理了,而当我们在main函数里用到的userDao,其实是Spring容器帮咱们创建好的对象。并不是咱么主动去new创建的哦。这就是控制反转,笔者的理解是,把对象的创建交给Spring,咱们只管用就行。