标签:prope 根据 创建xml文件 contain 应该 通过 错误 注入 回收
Bean通常被定义在配置文件当中,Bean实例化由Spring的Ioc容器进行管理,Bean的实例可以通过Beanfactory进行访问,实际上大部分J2EE应用,Bean是通过ApplicationContext来访问的,ApplicationContext是BeanFactory的子接口,功能要比BeanFactory强大许多
BeanFactory常用方法:
通常使用XmlBeanFactory类来实现
配置文件
定义<bean>节点时,通常要指定两个属性
id:用来指明bean的标识符,这个标识符具有唯一性,Spring对bean的管理以及bean之间这种依赖关系都需要这个属性
class: 指明该bean的具体实现类,这里不能是接口(可以是接口实现类)全路径包名.类名
Bean在Spring容器中两种行为(通过scope来设置默认不写为singelton)
singleton:单实例模式(默认,构造方法为private),整个Spring的容器中只有一个共享实例存在(singleton)
non-singelton:每次请求该bean,Spring容器都会新建立一个bean实例,然后返回给程序(request,session,prototype)
Bean的命名:
按照Java中的命名规范即可,使用清晰的,描述性的,一致的命名规范
Bean的命名机制:
id 当在Spring的窗口当中,查找某个Bean对象时,首先根据id进行查找,将其余作为Bean的默认名称,如果ID属性不存在,则根据Name属性进行查找(将其中的第一个名称作为默认的名称),如果ID和NAME都不存在根据类的名称进行查找
id---------->name--------------->类名
<bean id="id1" class="实现类"></bean> <bean name="id1" class="实现类"></bean> <bean class="实现类"></bean>
Bean的别名:
通过alias属性指定:
<alias name="指定关联的Bean的名称fromname" alias="该关联类的别名的名称toname"/>
创建XML文件----写入配置信息---生成Bean类----加入Bean到配置文件
如果属性不是String类型,属性值会通过PropertyEditors转换为其他类型
-ref元素进行标识
Ref元素通常有两个属性:
bean:指定不在同一个XML文件中的bean的id
<bean id="test" class="com.pb.test"> <property name="user"> <ref bean="其他的bean的id"/> </property> </bean>
ocal:指定在同一个XML文件中的bean的id
<bean id="test" class="com.pb.test"> <property name="user"> <ref bean="相同的XML文件中的bean的id"/> </property> </bean>
value和ref的区别:
使用ref元素,可以让Spring在部署时验证依赖的Bean是否真实存在
使用value元素,进行指定仅在创建Bean实例时做验证,会导致错误的延时出现,而且还会带来额外的类型转制开销
List:
<bean id="test" class="com.pb.test"> <property name="lists"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property> </bean>
Map:
<bean id="test" class="com.pb.test"> <property name="map"> <map> <entry key="key1"> <value>value1</value> </entry> <entry key="key2"> <value>key2</value> </entry> </map> </property> </bean>
props:
<bean id="test" class="com.pb.test"> <property name="props"> <props> <prop key="key1">value1</prop> <prop key="key2">value2</prop> </props> </property> </bean>
set:
< property name ="interest" > < set > < value > 唱歌 </ value > < value > 跳舞 </ value > < value > 书法 </ value > </ set > </ property >
通过autowire属性来设置
no:默认的。默认为不绑定
byName:根据属性名称自动进行绑定
byType:根据属性类型自动进行绑定
两个时机
Spring可以管理实例化bean之间以及销毁之前的行为
注入依赖关系之后:
销毁Bean之前:
Bean的继承:
什么是Bean继承呢?继承是指子bean可以从父bean继承配置信息,也可以覆盖特定的配置信息,或者在父bean的基础之上加入新的配置信息,其实质类似于java中的子类与父类的继承关系,利用继承可以节省很多配置工作,在实际的项目应用中,共有的配置会配置成模板,供子bean继承,如果2个bean之间配置信息大致相同,可以采用bean的继承来减少配置工作。
Bean的模板:
在Spring中既然要将公用的配置,配置称模板,这个模板不需要被实例化,而仅仅作为子bean的模板来使用,但在ApplicationContext或者BeanFactory默认会初始化所有的bean.
使用abstract属性,该属性可以阻止模板被实例化
abstract="true"时,表示该bean是抽象的bean,不能被初始化。
标签:prope 根据 创建xml文件 contain 应该 通过 错误 注入 回收
原文地址:https://www.cnblogs.com/yuexiaoyun/p/9456491.html