spring IOC入门: IOC属性注入、自动装配

IOC注入拓展

demo1——属性set注入、构造函数注入、单例模式
spring IOC入门: IOC属性注入、自动装配
是配置文件applicationContext.xml的书写方式,为我们演示了两种注入方式:构造方法注入和set方法注入。bean3可以通过单例模式来创建。
spring IOC入门: IOC属性注入、自动装配
输出结果:
spring IOC入门: IOC属性注入、自动装配
demo2——不同类型的属性注入、构造函数注入、单例模式
spring IOC入门: IOC属性注入、自动装配
spring IOC入门: IOC属性注入、自动装配
如图是配置文件papplicationContext.xml的书写方式,为我们演示了不同种类属性的注入方式。
spring IOC入门: IOC属性注入、自动装配

输出结果:

spring IOC入门: IOC属性注入、自动装配
demo3——自动装配、abstract
spring IOC入门: IOC属性注入、自动装配
如图是配置文件applicationContextOther.xml的书写方式,展示了父类子类,autowire的用法。

spring IOC入门: IOC属性注入、自动装配

bean1无法直接获得,因为xml中添加了abstract=”true”属性。bean4可以通过autowire=”byName”或者autowire=”byType”种方式生成。


注意:
1.byName:bean4有属性bean3,需要xml中id为bean3的class要和bean4里面所要求的类型一致,否则抛出异常。
2.byType:bean4有属性bean3,id为bean3的,并且class为com.aowin.bean.Bean3的只能有唯一一个。否则将抛出异常。

这里的属性注入和之前的用法的区分:
之前用法:

spring IOC入门: IOC属性注入、自动装配

现在用法:

spring IOC入门: IOC属性注入、自动装配

之前
property 中的name,对应的是相应的类中的变量名;
property中的ref ,对应的是bean的id;
现在
bean的id 对应的是相应类中的变量名;
bean的class对应的是相应类中变量的class;

spring ioc扩展理解:


Spring最重要的核心概念是Inverseof control,中文常译为”控制反转”,更具体的一个名字是Dependency Injection ,中文常译为”依赖注入”,使用spring,你不必自己在程序代码强维护对象的依赖关系,只需在配置文件中加以设定,spring核心容器会自动根据配置将依赖注入指定的对象.

Ioc的一些表现:应用程序不应依赖于容器,而是容器服务于应用程序。

Ioc的抽象概念是:”依赖关系的转移”.
Ioc的一些表现:Ioc的一些表现:应用程序不应依赖于容器,而是容器服务于应用程序。
IoC模式基本上上一个高层的模式概念,实现IoC有两种方式:Dependecy,Injection与ServiceLocator .

Ioc的一些表现:应用程序不应依赖于容器,而是容器服务于应用程序。
IoC要求的是容器不应该或尽量不要侵入应用程序,也就是不应出现与容器相依的API,应用程序本身可以依赖于抽象接口容器,可以透过这些抽象接口将所需的资源注入到应用程序中,应用程序不向容器主动要求资源,故而不会依赖于容器的特定API,应用程序可以随时从容器系统中脱离,转移至其它的容器或框架而不用任何的修改.

应用程序不应依赖于容器,而是容器服务于应用程序。
IoCInversion of Control。控制反转,反转了什么?
反转的是建立组件之间的依赖关系的方式:组件本身不主动与其他组件建立直接的关系,依赖将在组件以外的某个地方(组件管理者或容器)建立
IoC控制反转 与 DI (Dependency Injection)依赖注入(Martin Fowler)