DI:是IOC的另一种表达方式:即组件以一些预先定义好的方式(例如setter方法)接受来自容器的资源注入
IOC的前身:
1、分离接口和实现
耦合度是最高的方式
2、采用工厂设计模式
耦合度降低
代码复杂
3、采用反转控制
创建IOC容器
在读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化后,才可以从IOC容器中获取Bean实例使用
配置bean
配置形式:
1、基于xml文件的方式
2、基于注解的方式
配置方式:
1、通过全类名(反射)
2、通过工厂方法
3、FactoryBean
依赖注入的方式:
1、属性注入
即通过setter方法注入Bean的属性值或依赖的对象 这是实际应用中最常用的注入方式
2、构造器注入
在<constructor-arg>元素里声明属性 这里没有name属性
IOC的实例有俩种形式:
1、BeanFactory:IOC容器的基本实现
BeanFactory是Spring框架的基础设施,面向Spring本身;
2、ApplicationContext:提供了更多的高级特征,是BeanFatory的子接口
ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext,并不会使用底层的BeanFatory
ApplicationContext的主要实现类:
1、ClassPathXmlApplicationContext(从类路径下加载配置文件)
2、FileSystemXmlApplicationContext(从文件系统中加载配置文件)
从IOC容器中获取Bean实例
getBean()
通过id获取:通过id定位到容器中的bean
通过类型获取(类.class) 要求在bean中配置是唯一的
。。。