05Bean的属性相关内容

本文深入探讨Spring框架中Bean的管理机制,包括BeanFactory与ApplicationContext的作用、Bean的ID与Name属性的区别、部署模式的选择、依赖注入的方式及Bean属性的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!-- 整篇系列内容都是根据郭峰大大的Spring从入门到精通学习整理的-->


Bean的知识相关

在Spring中,有两个最基本、最重要的包,即org.springframwork.beans和org.springframework.context.

这两个包,为了实现无侵入式框架,大量引用了java的反射机制,通过动态代理避免了硬编码,为spring的反向控制提供了基础。

这两个包中,最重要的类是BeanFactory和ApplicationContext。

BeanFactory提供了一种先进的配置机制来管理任何种类的Bean。

ApplicationContext建立在BeanFactory之上,并增加了其他的功能,例如——国际化的支持、获取资源、事件传递等。

Bean的标志——ID和Name

    <!--定义一个bean -->

    <!--<bean id="Animal" class="spring.impl.Cat"/>-->

     <beanid="Animal"class="spring.impl.Dog"/>

上面定义了一个Bean,id是这个bean的唯一标识,Class是这个Bean的全限定类名。

在spring的配置文档,Beans是xml文件的根元素,一个Bean有一个Id,这个id在管理Bean的BeanFactory或ApplicationContext中必须是唯一标识的,因为在代码中通过BeanFactoryApplicationContext来获取Bean实例时,都要用到他来作为唯一的索引

也可以使用name属性来指定Bean的id。

ID和Name的区别

在Spring中可以用ID或者name属性来指定Bean的ID,并且这两个或者其中一个属性至少指定一个ID。

ID属性允许指定一个Bean的Id,并且他在XML DTD中作为一个真正的XML元素的ID属性被标记,所以XML解析器能够在其他元素指向他的时候做一些额外的校验。

但是XML规范严格限定了在xml ID中合法的字符  如果在开发过程中有必要使用一些非法的字符,也就是说使用一些不符合ID规定的字符,又或者是给Bean增加其他的别名,这样就可以通过Name属性来指定一个或多个ID,当指定多个ID是需要使用(,)或者(:)分隔。

也就是说,用ID属性指定Beanid是一个比较好的方式。

一个Bean一般只有一个Id,如果一个Bean有超过一个ID,那么另外的Id可以认为是这个Bean的别名。

Spring的配置文件中class属性指明了Bean的来源,即Bean的实际路径——完全限定名。

SpringBean可以被定义为两种部署模式中的一种,singleton或者non-singleton(property)

Spring默认的模式是singleton模式。

★如果一个Bean被定义为singleton模式,那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例。————单例模式

         如果需要客户端每次向BeanFactory请求时,都创建新的实例,只需要把singleton=true

改成singleton=false

★如果一个Bean被定义为non-singleton(prototype)模式,那么对这个Bean的每次请求都会创建一个新的Bean实例。————工厂模式?原型模式

 

Bean属性的两种注入方式:

基于setter的依赖注入:

         调用无参的构造函数或午餐的额静态工厂方法实例化配置文档中定义的Bean后,通过调用对应成员的Set*()方法实现的。

 

基于构造函数的依赖注入:

         是通过调用带有需要参数的构造方法实现的,每个参数表示一个对象或者属性。

 

Bean的属性配置中,属性可以引用定义的其他Bean,也可以使用匿名Bean

Bean的属性配置中,属性的null值处理可以使用<value>null</value>.或者<null/>

Beandepends-on属性可以用来在初始化使用这个Bean之前强制执行一个或多个Bean的初始化

<bean id=…  class=…  depends-on=依赖的bean名称/>,这样在初始化该Bean之前就会强制初始化所以来的Bean

<beans…>

<!--  定义一个BeanbeanBeanFactoryApplicationContext中是唯一的,Class指出这个Bean的来源,Singleton指定了这个Bean是一个单例模式,Depends-on指定了这个Bean初始化之前需要先初始化所依赖的类   -->

         <bean id=”TestBean” class=”类的全限定名称” singleton=”true” depends-on=”所依赖的Bean”/>

</beans>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值