(皖西学院 电子与信息工程学院 六安 237012)
摘要:Spring IOC通过“控制反转”方法,实现组件的创建和管理,并通过“依赖注入”实现组件的配置和组件之间的关系。本文通过对Spring IOC框架的阐述,主要分析了其主要接口和实现类、配置文件的配置及IOC的工作原理。
关键词:IOC;依赖注入
1引言
IOC(Inversion of Control),即“控制反转”,是程序设计的一种设计思想,是Spring框架中的核心技术。在Java开发中,IOC将设计的对象交给IOC容器控制管理,而不是传统的由对象内部直接控制。
IOC使程序中组件或类之间形成松耦合的结构。IOC将创建实例的任务交给IOC容器,这样开发时只需要直接使用类的实例,这就是IOC控制反转。通常用一个所谓的好莱坞原则(“Don't call me.I will call you.”请不要给我打电话,我会打给你。)来比喻这种控制反转的关系。
2IOC配置文件
IOC配置文件默认为applicationContext.xml,主要配置JavaBean的实例和关系,可以是其他文件名称,一般用此名称。IOC配置文件位置,在开发时一般在src下。
配置一个 bean:
<bean id="user" class="com.hjh.bean.User">
<property name="name" value="Marry"></property>
</bean>
Id是Bean 的名称,在 IOC 容器中必须是唯一的,若 id 没有指定,Spring 自动将权限定性类名作为 Bean 的名字。id 可以指定多个名字,名字之间可用逗号、分号、或空格分隔。
3IOC管理JavaBean的接口和类
3.1BeanFactory接口
BeanFactory接口实现类XMLBeanFactory。BeanFactory实现了IOC控制,被称为“IOC容器”,实现JavaBean的创建、配置和管理。如代码:
Resource resource = new ClassPathResource("applicationContext.xml"):
BeanFactory factory = new XmlBeanFactory(resource):
User user =(User)factory.getBean("user"):
user为IOC配置文件中配置的bean。
3.2AplicationContext接口
AplicationContext接口继承BeanFactory接口,但比BeanFactory接口功能更强大,实现类主要有:ClassPathXmlAplicationContext,FileSystemXmlAplicationContext,WebApplicationContext类。
期刊文章分类查询,尽在期刊图书馆
其中,ClassPathXmlAplicationContext类最常用,如代码:
ApplicationContextctx=new ClassPathXmlAplicationContext("applicationContext.xml"):
User user =(User)ctx.getBean("user"):。
4IOC 容器中 Bean 的生命周期
Spring IOC 容器可以管理 Bean 的生命周期,Spring 允许在 Bean 生命周期的特定点执行定制的任务。Spring IOC 容器对 Bean的生命周期进行管理的过程:
1)通过构造器或工厂方法创建 Bean 实例;
2)设置 Bean 的属性和对其他 Bean 的引用;
3)调用 Bean 的初始化方法;
4)使用Bean;
5)当容器关闭时,销毁Bean。
5依赖注入
5.1Setter注入
一个简单的JavaBean最明显的规则就是一个私有属性对应Setter和Getter方法,来实现对属性的封装。既然JavaBean有Setter方法来设置Bean的属性,Spring就会有相应的支持。配置文件中的<property>元素可以为JavaBean的Setter方法传参,即通过Setter方法为属性赋值。
5.2构造器注入
在类被实例化的时候,它的构造方法被调用并且只能调用一次。所以构造器被常用于类的初始化操作。<constructor-arg>是<bean>元素的子元素。通过<constructor-arg>元素的<value>子元素可以为构造方法传参,也可以是<constructor-arg, value="">。
1)按索引匹配入参
<bean id="car" class="com.hjh.bean.User">
<constructor-arg value="Marry" index="0"></constructor-arg>
<constructor-arg value="10" index="1"></constructor-arg>
</bean>
2)按类型匹配入参
<bean id="car" class="com.hjh.bean.User">
<constructor-arg value="Marry" type="java.long.String"></constructor-arg>
<constructor-arg value="10" type="int"></constructor-arg>
</bean>
6结束语
Spring IOC使组件之间的依赖关系由容器控制管理,即由Spring IOC容器动态的将某种依赖关系注入到组件之中。依赖注入的目标是为了提升组件的重用率,为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,只需要通过简单的配置,无需任何代码的写入,就可以为目标指定需要的资源,完成自身的业务逻辑,而不需要关心具体的资源的出处、由谁实现。
参考文献:
[1]郝佳.Spring源码深度析[M].人民邮电出版社.2013.9
[2] 明日科技.Java WEB从入门到精通[M].清华大学出版社.2012.9
基金项目:
安徽省高校优秀青年人才基金项目(2011SQRL151)
安徽省六安市委托产学研项目(2013LWA005)
作者简介:
黄继红(1977-),男,安徽六安人,硕士,讲师,主要研究方向:软件工程
论文作者:黄继红,刘正余
论文发表刊物:《电力设备》2017年第35期
论文发表时间:2018/4/27
标签:容器论文; 接口论文; 组件论文; 方法论文; 配置文件论文; 实例论文; 属性论文; 《电力设备》2017年第35期论文;