什么是IOC(控制反转)?
控制反转指的就是应用程序把对象的所有控制权都交给Spring容器,应用程序本身不负责对象的创建和维护,然后容器把对象的使用权反转给程序。
实例化对象的两种实现方式:
配置方式:
注解方式:
1.通过扫描方式,扫描指定包路径下的所有注解
2.对需要实例化的类添加注解:
Component注解是bean类实例化提供的 注解方式。它还衍生出三个注解,Controller(web层)Service(业务层),Repository(dao层)
什么是DI(依赖注入)?
组件之间的依赖关系由容器在运行期决定,形象的说就是容器动态的将某个依赖关系注入到组件中。通俗的说就是依赖配置文件将属性注入Bean.,即应用程序依赖容器获取某个对象所需要的外部资源。
实现方式:
配置形式:
注解方式:有两种注解Autowired和Resource.
@Autowired与@Resourse的区别
相同点:
1.都可以用来装配bean
2.注入的位置可以是类的属性,也可以set方法
不同点:
1.@Autowired默认情况下按类型装配(这个注解属于Spring),默认情况下要求依赖对象必须存在,如果要允许空值,可以设置它的required属性为false,如果想要按name来装配。可结合@Qualifier注解进行使用;
2.@Resource(这个注解属于J2EE),默认按照name进行装配,可通过name属性进行指定,如果没有指定name属性,当注解写在类的属性上,默认按照属性名进行装配,如果找不到与名称相匹配的bean时才按照类型装配。
IOC与DI的关系:
IOC是将类的对象的创建交给Spring管理,DI是将类里面的属性在创建类的过程中给属性赋值。DI不能单独存在,DI需要在IOC的基础上完成。