【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只需要被动接受就可以了。