Spring 中bean与id 即默认值

转载 2016年08月30日 10:49:49
在BeanFactory的配置中,<bean>是我们最常见的配置项,它有两个最常见的属性,即id和name,最近研究了一下,发现这两个属性还挺好玩的,特整理出来和大家一起分享。
1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的。总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错,诸如:


代码
org.xml.sax.SAXParseException: Attribute value "?ab" of type ID must be a name.


2.name属性则没有这些限定,你可以使用几乎任何的名称,如?ab,123等,但不能带空格,如"a b"," abc",,这时,虽然初始化时不会报错,但在getBean()则会报出诸如以下的错误:


代码
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'a b' is defined


3.配置文件中不允许出现两个id相同的<bean>,否则在初始化时即会报错,如:


代码
org.xml.sax.SAXParseException: Attribute value "aa" of type ID must be unique within the document.

4.但配置文件中允许出现两个name相同的<bean>,在用getBean()返回实例时,后面一个Bean被返回,应该是前面那 个<bean>被后面同名的 <bean>覆盖了。有鉴于此,为了避免不经意的同名覆盖的现象,尽量用id属性而不要用name属性。

5.name属性可以用,隔开指定多个名字,如<bean name="b1,b2,b3">,相当于多个别名,这时通过getBean("a1") getBean("a2") getBean("a3")返回的都是同一个实例(假设是singleton的情况)

6.如果id和name都没有指定,则用类全名作为name,如<bean class="com.stamen.BeanLifeCycleImpl">,则你可以通过
getBean("com.stamen.BeanLifeCycleImpl")返回该实例。

7.如果存在多个id和name都没有指定,且实例类都一样的<bean>,如:


代码
<bean class="com.stamen.BeanLifeCycleImpl"/>
<bean class="com.stamen.BeanLifeCycleImpl"/>
<bean class="com.stamen.BeanLifeCycleImpl"/>

则第一个bean通过getBean("com.stamen.BeanLifeCycleImpl")获得,
第二个bean通过getBean("com.stamen.BeanLifeCycleImpl#1")获得,

第三个bean通过getBean("com.stamen.BeanLifeCycleImpl#2")获得,以此类推。


转自 : http://wxfstwxf.iteye.com/blog/1470485

相关文章推荐

spring 配置时 bean id 与bean name 的区别

简单的说:id用来标识bean,是唯一的,且只有一个;name定义的是bean的alias,可以有多个,并可能与其他的bean重名。 详细的说: id是唯一标识bean.不能用特殊字符:×#@ ,...

Spring进阶之路(6)-抽象Bean与工厂Bean以及获取Bean的id

有的时候我们一些类中的参数有一部分是重复的,如果不管这些重复的参数的话,会导致配置文件比较臃肿,尤其是当这些参数比较多而且被很多的bean用到的时候。那么最好的方式是这样的,将这些重复的东西抽取出来放...

[JAVA][Spring]Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别

Spring中Bean的命名 1、每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一; 2、可以不指定id属性,只指定全限定类...

【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

搭建SpringMVC+Spring+Mybatis集成开发环境,实现用户增删改查demo

【SSH进阶之路】Spring的AOP逐层深入——采用注解完成AOP(七)

采用注解方式,实现AOP,解析五类Advice的执行顺序。

给JavaBean赋默认值并且转Json字符串

软件测试技术交流群 : 429183023 今日在工作中整理dubbo接口的时候,有些接口参数类型是JavaBean类型的数据,在整理的时候又想直接将JavaBean参数直接以默认的js...

源于项目:通用初始化JavaBean属性类

在大型项目中,一张数据表可能有100甚至200个字段,对应的javaBean字段也会有这么多,比如我们公司,做银行系统,一张数据表150个字段很正常。在系统中我们需要向数据表写javaBean,比如新...

Spring配置中<bean>的id和name属性区分

test

使用监听器对Spring bean id进行唯一校验

因为Spring IOC容器启动加载时会检查bean定义是否有重复,如果有重复则会根据AbstractRefreshableApplicationContext类中的allowBeanDefiniti...

spring bean id重复覆盖的问题解决

问题:    当我们的web应用做成一个大项目之后,里面有很多的bean配置,如果两个bean的配置id是一样的而且实现类也是一样的,例如有下面两份xml的配置文档: beancontext1.x...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)