spring配置文件中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")获得,以此类推。
spring配置文件中Bean中的id和name的区别相关推荐
- 通过Spring配置文件中bean中的property赋值
基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...
- Spring配置文件applicationContext.xml中bean>>property>>name属性的含义
Spring配置文件applicationContext.xml中bean>>property>>name属性表示的含义 首先我们知道property是bean元素的子元素,它 ...
- spring配置文件import标签中使用${}占位符获得配置文件的属性值
2019独角兽企业重金招聘Python工程师标准>>> 一般情况下我们在Spring的配置文件中使用<import>标签是这样的,<import resource= ...
- Spring容器实例bean中的几个关键PostProcessor
本文从几个spring提供的关键的PostProcessor处理器,来帮助理解spring创建bean的过程: 下面是按方法执行的前后顺序排列 BeanFactoryPostProcessor.pos ...
- spring配置文件中非bean标签的原理解析
2019独角兽企业重金招聘Python工程师标准>>> 在spring配置文件中,我们经常见到context:property-placeholder/context:compone ...
- Spring中使用XML方式导入Spring配置文件,Boot中使用全注解导入Spring配置
目录 Spring中的方法 Spring Boot中的方法 Spring中的方法 @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效: Spring Boot里面没有 ...
- Spring系列之bean中的autowire-candidate又是干什么的?
当容器中某种类型的bean存在多个的时候,此时如果我们从容器中查找这种类型的bean的时候,会报下面这个异常: org.springframework.beans.factory.NoUniqueBe ...
- Idea中Spring整合MyBatis框架中配置文件中对象注入问题解决方案
运行环境:Spring框架整合MaBitis框架 问题叙述: 在Spring配置文件applicationContext-mybatis.xml中配置好mybatis之后 <?xml versi ...
- 跟着柴毛毛学Spring(3)——简化Bean的配置
通过前面的学习.我们会感觉到对于一个有较多Bean的大项目,Spring的配置会比較复杂. 那么接下来我们就介绍怎样简化Spring的配置. 简化Spring的配置主要分为两类: 1. 自己主动装配 ...
最新文章
- Machine Learning week 9 quiz: Recommender Systems
- 我们又双叒搬家了!(附福利)
- codeforce 589B枚举
- linux组手机nas,linux 搭建nas服务器
- 计算机配置 凭据分配,win7怎样添加凭据?-win7添加凭证的方法 - 河东软件园
- NPOI读取Excel生成DataTable转为Json后利用LitJons读取
- python虚拟环境 windows环境搭建_windows下安装Python虚拟环境virtualenvwrapper-win
- [tensorflow]tensorflow2.0的优化理论
- 2020 IJCAI 接受论文 list 分类排列(三)
- 吉林省专升本历年真题高频词汇
- nas网络存储_网络附加存储NAS
- html中自动换行标记[转]
- C盘空间大释放——Downloaded Installations
- iPad做Windows扩展屏
- 58沈剑解读:数据库典型架构实践
- win7搜索功能失效/win7搜索功能不能使用
- 【英语单词词汇笔记本】把英语常用常考的单词分100个类别:主要针对阅读、翻译、作文、词汇量
- iOS开发-定制多样式二维码
- IOS m3u8格式视频流截图
- 高通Android手机软件开发培训