【1】关于spring中IOC和AOP的理解
IOC总结起来就一句话依赖注入,那么依赖注入是什么?在spring框架出来之前项目的结构大概就是servlet层,service层,dao层。servlet层依赖service,service依赖dao,层层依赖,从上而下的依赖架构具有耦合度高的缺陷,就像一辆汽车,car依赖车身frame,车身依赖轱辘wheel。一旦需要修改wheel的尺寸,那么整个car都得需要改变。而IOC就是采用了一种依赖倒置的原则,将由上而下的依赖方向倒置。
public class Servlet { Service service; public Servlet() { super(); **this.service = new Service()**; } public void servlet() { service.service(); } } public class Service { Dao dao; public Service() { super(); **this.dao =new Dao()**; } public void service() { dao.judge(); } } public class Dao { public void judge(){ System.out.println("dao层的方法judge"); } } public class Run { public static void main(String[] args) { Servlet servlet = new Servlet(); servlet.servlet(); } }
-----------------------------------------------------------------------------------
public class Servlet { Service service; public Servlet(Service service) { super(); **this.service = service**; } public void servlet(){ service.service(); } } public class Service { Dao dao; public Service(Dao dao) { super(); **this.dao = dao**; } public void service(){ dao.judge(); } } public class Dao { public void judge(){ System.out.println("dao层的方法"); } } public class Run { public static void main(String[] args) { **Dao dao = new Dao();** ** Service service = new Service(dao);** ** Servlet servlet = new Servlet(service);** ** servlet.servlet();** } }
从上面的两个demo可以看出来,servlet、service分别依赖的service对象和dao对象由开始的程序创建控制变成由Run类创建,此时的Run类就类似于IOC容器,也就是每个组件所依赖的对象由第三方容器创建并管理,使用构造器或者setter方法推送给程序的各个组件,servlet和service只需要被动接受就可以了。