spring IOC入门: IOC属性注入、自动装配
IOC注入拓展
demo1——属性set注入、构造函数注入、单例模式
上图是配置文件applicationContext.xml的书写方式,为我们演示了两种注入方式:构造方法注入和set方法注入。bean3可以通过单例模式来创建。
输出结果:
demo2——不同类型的属性注入、构造函数注入、单例模式
如图是配置文件papplicationContext.xml的书写方式,为我们演示了不同种类属性的注入方式。
输出结果:
demo3——自动装配、abstract
如图是配置文件applicationContextOther.xml的书写方式,展示了父类子类,autowire的用法。
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的只能有唯一一个。否则将抛出异常。
这里的属性注入和之前的用法的区分:
之前用法:
现在用法:
之前
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,应用程序可以随时从容器系统中脱离,转移至其它的容器或框架而不用任何的修改.
IoC=Inversion of Control。控制反转,反转了什么?
反转的是建立组件之间的依赖关系的方式:组件本身不主动与其他组件建立直接的关系,依赖将在组件以外的某个地方(组件管理者或容器)建立
IoC控制反转 与 DI (Dependency Injection)依赖注入(Martin Fowler)