二.IOC实践
2.1 Spring核心接口
Spring容器负责创建Bean实例,所以需要知道每个Bean的实现类,Java程序面向接口编程,无须关心Bean实例的实现类;但是Spring容器必须能够精确知道每个Bean实例的实现类,因此Spring配置文件必须精确配置Bean实例的实现类。
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean。
早期的电脑性能低,内存小,所以spring容器的容量不足,不能讲所以的对象全部创建好放入容器,所以使用的是BeanFactory,需要某个对象时,再进行创建,随着电脑硬件的发展,内存越来越大,所以spring框架引入了ApplicationContext,将所有的对象都创建好,放入容器,使用哪个对象,从容器中取得即可。
2.2 ApplicationContext 接口
三个实现类
- ClassPathXmmlApplicationContext:它可以加载类路径下的配置文件,要求文件必须在类路径下,不存在,则无法加载。
- FileSystemApplicationContext:加载任意路径下的配置文件(必须有访问权限)
- AnnotationConfigApplicationContext:用于读取注解创建容器
2.3 获取Bean的三种方式
- 按照类型拿 bean:唯一
- 按照 bean 的名字拿 bean:不安全
- 按名字和类型拿 bean:(推荐)
2.4 创建Bean的三种方式
2.4.1 无参构造注入(默认)
2.4.2有参构造注入
2.4.2.1 下标方式
2.2.4.2 type
2.2.4.3 name
- 按照类型拿 bean:唯一
- 按照 bean 的名字拿 bean:不安全
- 按名字和类型拿 bean:(推荐)
2.4 创建Bean的三种方式
2.4.1 无参构造注入(默认)
2.4.2有参构造注入
2.4.2.1 下标方式
2.2.4.2 type
2.2.4.3 name
2.2.4.4 ref