spring ioc 基础
2013-03-01 10:02
197 查看
Spring依赖注入容器的核心就是BeanFactory。BeanFactory负责管理组件和组件的依赖。在Spring,任何由容器管理的组件都可以称作Bean。
应用是通过BeanFactory接口与Spring DI容器进行交互。在某些地方,你必须创建一个实现了BeanFactory接口的实现类的实例,用来管理bean和bean的依赖信息。这样,你就可以通过BeanFactory来访问Bean及进行进一步处理。有些情况下,这些步骤都是自动处理的。但是在大多数情况,你需要自己编码来实现。
虽然BeanFactory可以编程式的配置,但是更常见的是使用各种配置文件来外部化配置。
为了能够在BeanFactory内识别Bean,每个Bean都会分配一个名字。每个Bean至少该拥有一个名字,还可以拥有多个名字。Bean的任何第一个名字之外的名字都叫做Bean的别名。这样你就可以使用Bean的名字从BeanFactory中取回Bean,及建立依赖关系。
在BeanFactory的内部,任何Bean配置都会成为一个实现了BeanDefinition接口的类的实例。Bean配置不仅仅保存了它自身Bean的信息,而且还保存了它的依赖Bean的信息。同样,任何BeanFactory都需要实现BeanDefinitionRegistry接口。
我们可以从配置文件中读取BeanDefinition数据,使用PropertiesBeanDefinitionReader或XmlBeanDefinitionReader。这是两个实现了BeanDefinitionRegistry的BeanFactory的两个主要实现。PropertiesBeanDefinitionReader用于从Properties文件中读取Bean定义,而XmlBeanDefinitionReader用于从xml文件中读取Bean定义。选用哪种方式来配置Bean呢?xml还是properties文件。虽然,properties文件对于一些小型,简单的项目是非常好的。但是当需要处理大量的Bean时,你就会十分讨厌properties了。Xml配置就更好一些。
基于Spring的项目的非常关键的一步就是为你的应用创建一个BeanFacory配置文件。在这个配置文件中定义Bean的定义。
每一个Bean都使用<bean>标签定义在<beans>标签之下。
<bean>有两个必须的属性:id和class。Id属性代表Bean的默认的名字。Class属性指定Bean的具体类型,并且必须包括完整的类路径。
上面的例子,我们并没有使用依赖注入的特性。我们来使用Setter方法注入,为UserInfoDTO在外部注入一些属性
注入组件
应用是通过BeanFactory接口与Spring DI容器进行交互。在某些地方,你必须创建一个实现了BeanFactory接口的实现类的实例,用来管理bean和bean的依赖信息。这样,你就可以通过BeanFactory来访问Bean及进行进一步处理。有些情况下,这些步骤都是自动处理的。但是在大多数情况,你需要自己编码来实现。
虽然BeanFactory可以编程式的配置,但是更常见的是使用各种配置文件来外部化配置。
为了能够在BeanFactory内识别Bean,每个Bean都会分配一个名字。每个Bean至少该拥有一个名字,还可以拥有多个名字。Bean的任何第一个名字之外的名字都叫做Bean的别名。这样你就可以使用Bean的名字从BeanFactory中取回Bean,及建立依赖关系。
在BeanFactory的内部,任何Bean配置都会成为一个实现了BeanDefinition接口的类的实例。Bean配置不仅仅保存了它自身Bean的信息,而且还保存了它的依赖Bean的信息。同样,任何BeanFactory都需要实现BeanDefinitionRegistry接口。
我们可以从配置文件中读取BeanDefinition数据,使用PropertiesBeanDefinitionReader或XmlBeanDefinitionReader。这是两个实现了BeanDefinitionRegistry的BeanFactory的两个主要实现。PropertiesBeanDefinitionReader用于从Properties文件中读取Bean定义,而XmlBeanDefinitionReader用于从xml文件中读取Bean定义。选用哪种方式来配置Bean呢?xml还是properties文件。虽然,properties文件对于一些小型,简单的项目是非常好的。但是当需要处理大量的Bean时,你就会十分讨厌properties了。Xml配置就更好一些。
基于Spring的项目的非常关键的一步就是为你的应用创建一个BeanFacory配置文件。在这个配置文件中定义Bean的定义。
每一个Bean都使用<bean>标签定义在<beans>标签之下。
<bean>有两个必须的属性:id和class。Id属性代表Bean的默认的名字。Class属性指定Bean的具体类型,并且必须包括完整的类路径。
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE beans PUBLIC "-//LWC//DTD BEAN//EN" "lwc-beans.dtd"> <beans> <bean id="userInfo" class="com.ang.userApp.dto.UserInfoDTO"/> </beans>
package com.ang.test; public class BeanWithDI { public static void main(String[] args)throws Exception{ BeanFactory factory = getBeanFactory(); UserInfoDTO userInfo = (UserInfoDTO)factory.getBean("userInfo"); System.out.println(userInfo); } private static BeanFactory getBeanFactory()throws Exception{ XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource("com/ang/test/beans.xml")); return factory; } }
上面的例子,我们并没有使用依赖注入的特性。我们来使用Setter方法注入,为UserInfoDTO在外部注入一些属性
<bean id="userInfo" class="com.ang.userApp.dto.UserInfoDTO"> <property name="userId"> <value>001</value> </property> <property name="userName"> <value>李四</value> </property> </bean>
注入组件
<bean id="beanOne" class="com.ang.test.BeanOne"> <property name="beanTwo"> <ref bean="beanTwo"/> </property> </bean> <bean id="beanTwo" class="com.ang.test.BeanTwo"/>注入集合
相关文章推荐
- spring基础及IOC注入
- 【JAVA菜鸟的扎实功底进行时】(一) ===JAVA反射机制,建立Spring Ioc的基础
- spring基础 ioc
- Spring IOC 基础
- Spring基础(一)——AOP&IoC
- spring基础学习之Ioc-反射简单介绍(四)
- Spring基础(IOC原理和反射机制+JavaBean)
- Spring基础-2-IOC注解
- Spring IOC基础
- 【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
- 【第二章】 IoC 之 2.1 IoC基础 ――跟我学Spring3
- JavaEE框架——Spring入门基础(控制反转Ioc和切面技术Aop)
- (spring-第9回【IoC基础篇】)BeanFactoryPostProcessor,实例化Bean之前的第二大利器
- 《Spring攻略》 第1章 Spring简介 - IoC基础
- spring 学习(1.1) 入门基础- IoC/依赖注入
- 【Spring】1 Spring IoC容器中组件管理 基础
- Spring 中基础概念——IoC、AOP
- spring学习笔记 -- day02 spring基础、IOC控制反转
- (spring-第15回【IoC基础篇】)容器事件
- Spring基础-1-IOC与DI