以前学习spring的时候总是说spring的特点是IOC和AOP,那具体是什么呢?
要是让我回答,我可能只知道IOC是一个管理bean的容器,需要使用bean的时候可以由IOC容器自动注入.
现在想想,通俗一点说: 我想要吃一些水果,因此有了水果这个类.
public class Fruit {}
public class Apple extends Fruit {}
public class Orange extends Fruit {}
public class Person {
    Fruit fruit;
}不使用IOC
如果不使用IOC, 那我需要自己去开辟一块地将水果种出来
public class Person {
    Fruit fruit = new Apple();
}当我今天不想吃苹果,想吃橘子的时候,必须去修改Person类中的Fruit实现类.
public class Person {
    Fruit fruit = new Orange();
}使用IOC
如果使用IOC, 只要去水果店告诉店员一声,我需要水果, 水果店提供什么水果就可以吃什么水果
public class Person {
    @Autowired
    Fruit fruit;
}
@Configuration
public class Supermarket {
    @Bean
    public Fruit supply(){
        return new Apple();
    }
}如果不想吃苹果,只要让水果店提供的水果改成另一种就可以了.
当然也有可能水果店会提供多种水果, 那只要声明一下想要哪种水果.
@Configuration
public class Supermarket {
    @Bean
    public Fruit apple(){
        return new Apple();
    }
    @Bean
    public Fruit orange(){
        return new Orange();
    }
}
public class Person {
    @Autowired
    @Qualifier("orange")
    Fruit fruit;
}