以前学习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;
}