Spring IOC自动注入
它的好处,是是一个超级大工厂,我们不用再管理对象,实际上,IOC分为两个部分:
`
其中
- Dependency Lookup指的是依赖查找:他是当前软件实体主动去某个服务注册地查找其依赖的那些服务。
- Dependency Injection指的是依赖注入:他是当前软件实体被动接受其他组件被IOc容器注入。
他的好处,举个例子,我们平常写的代码有三个部分:
- controller
- service
- dao
他们之间的依赖关系是
我们看一下,如果没有IOC,我们该如何实现ControllerA
// 先构造DaoA,DaoB,DaoC,DaoD
DaoA da = new DaoA();
DaoB db = new DaoB();
DaoC dc = new DaoC();
Daod dd = new DaoD();
// 构造Service A,Service B
ServiceA sa = new ServiceA(da, db);
ServiceB sb = new ServiceB(dc, dd);
// 构造ControllerA
ControllerA ca = new ControllerA(sa, sb);
看到了吗,构建一个Controller类,需要提前new一系列相关的对象,这样实在太麻烦了,在spring boot中是怎么做的?
@Controller
class ControllerA
{
@Autowired
ServiceA sa;
@Autowired
ServiceA sb;
}
@Service
class ServiceA
{
@Autowired
DaoA da;
@Autowired
DaoB db;
}
@Service
class ServiceA
{
@Autowired
DaoC dc;
@Autowired
DaoD dd;
}
看起来似乎没有简便多少,但实际上,对比一下,你会发现。每个类在构造的时候,只需将和它相关的类注入即可,并不需要考虑相关类的如何创建。比如,ControllerA只需要考虑ServiceA,ServiceA就好,至于这两个类怎么构建的,不用管,SPringIOC会替你管理。