IOC(Inversion Of Control):控制反转
控制:即对资源(如一个Java类)的获取方式
获取方式可以分为两种
- 主动获取
在Spring之前我们想要获取一个类都是自己创建,即new出这个类对象
如在LoginServlet中需要使用LoginServiceLoginServlet{ LoginService ls = new LoginService();//此时调用LoginService的无参构造创建对象 //下边需要对ls这个对象赋值然后开始使用,如果是一个较简单的对象,那么赋值也比较容易,如果对象复杂,那么赋值也是复杂的,所以赋值这个过程也不怎么友好 }
- 被动获取
即资源不需要我们自己创建,而是交给一个容器来完成创建和设计的工作,我们只需要从容器中取出想要的资源就可以LoginServlet{ LoginService ls;//取出想要的资源 public void login(){ ls.check;//直接开始使用 } }
容器:可以管理所有的组件(有功能的类);假设LoginServlet和LoginService都受容器的管理,容器可以自动探查(通过配置文件或注解)出哪些组件中需要用到其他组件 ,容器可以直接帮我们创建LoginService对象,并给LoginService对象赋值。
DI(Dependency Injection):依赖注入
容器能知道哪些组件在运行时需要其他组件 ,容器通过反射的形式,将容器中准备好的LoginService对象注入(利用反射给属性赋值)到LoginServlet中