`
xsz
  • 浏览: 3162 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring的bean的id和name属性

 
阅读更多
1.id属性命名必须满足xml命名规范,因为id其实是xml中就做了规范。总结起来相当于java的命名规范,不能以数字,符号大头不能有空格,如123,?ad,"ab "等都是不规范的,Spring在初始化时就会报错,诸如:
 

Java代码




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




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

2.name属性没有以上规定,但是在getBean()会报错


Java代码




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




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


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

4.name属性可以但是getBean得到的是后一个实例

5.name属性可以用,隔开多个名字

6.如果name,id都没指定,那么用类全名作为name

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

Java代码




   1. <bean class="com.stamen.BeanLifeCycleImpl"/> 

   2.    <bean class="com.stamen.BeanLifeCycleImpl"/> 

   3.    <bean class="com.stamen.BeanLifeCycleImpl"/> 




<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")获得,以此类推。

小结:

当然这些都是奇迹淫巧,不足以去时间,通过id指定唯一名称才是王道
分享到:
评论

相关推荐

    Spring Boot: Bean definition overriding

    在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。 为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。 因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅...

    Spring高版本对ibatis的支持

    &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt; &lt;property name="configLocation"&gt; &lt;value&gt;classpath:SqlMapConfig.xml &lt;/bean&gt; &lt;bean id="dao" class="org....

    spring自动装配例子

    &lt;bean id="xxx" class="xxx" &gt;&lt;/bean&gt; (3)byType:根据属性 类型 自动装配,相同类型多个会抛出异常,设值注入 &lt;bean class="xxx" &gt;&lt;/bean&gt; (4)constructor:与 byType 方式类似,不同之处是构造注入 &lt;bean ...

    Spring-IOC手动模拟实现-利用dom4解析xml文件

    /*模拟spring的实现 * 1.通过构造器获取配置文件 * 2.通过dom4j解析配置文件,得到list集合(存放Bean标签的id和class属性) * 3.通过反射实例化得到对应的实例化对象,放置...底层工厂方法+反射(动态调用方法和属性)

    spring applicationContext 配置文件

    &lt;bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" p:dataSource-ref="dataSourceProxy"&gt; &lt;property name="configLocation"&gt; &lt;value&gt;classpath:SqlMapConfig.xml...

    spring-xmemcached

    &lt;bean id="cacheProxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean"&gt; &lt;property name="interceptorNames"&gt; &lt;value&gt;cacheBeforeAdvice &lt;value&gt;cacheAfterAdvice &lt;value&gt;...

    Spring3.2.4+Quartz2.2.0 Demo

    &lt;bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;property name="triggers"&gt; &lt;ref bean="myJobTrigger" /&gt; ...

    spring定时任务

    &lt;bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean"&gt; &lt;property name="jobClass"&gt; &lt;value&gt;com.test.Test&lt;/value&gt; &lt;/bean&gt; &lt;!-- 关键在如下两个触发器的配置 --&gt; &lt;!-...

    springjdbc

    &lt;bean id="querytestController" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&gt; &lt;property name="targetObject" ref="testController" /&gt; &lt;property name="targetMethod" ...

    spring-agent.jar

    &lt;bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt; &lt;property name="loadTimeWeaver"&gt; &lt;bean class="org.springframework.instrument.classloading....

    Spring MVC 入门实例

    11 &lt;bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt; 12 &lt;property name="mappings"&gt; 13 14 &lt;prop key="/hello.do"&gt;helloController 15 16 17 &lt;/...

    springweb-Jackson

    &lt;bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /&gt; &lt;bean id="stringHttpMessageConverter" class="org.spring...

    spring(一)–概念和历史/hellospring/IOC创建对象的方式/Spring配置/set注入/c命名和p命名空间注入/bean的作用域

    文章目录一、概念和历史二、hellospring三、IOC创建对象的方式四、Spring配置五、set注入–属性注入六、c命名和p命名空间注入七 、bean的作用域 一、概念和历史 Spring的形成,最初来自Rod Jahnson所著的一本很有...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    -- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性--&gt; &lt;bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&gt; &lt;!-- 指定对满足哪些bean ...

    jdbc-ldap spring

    &lt;bean id="ldapDataSource" class="org.spring... &lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt; &lt;property name="dataSource"&gt; &lt;ref bean="ldapDataSource" /&gt; &lt;/bean&gt;

    Spring入门笔记.md

    ## Spring入门学习 首先认识下Spring的结构...&lt;bean id="helloBean" class="mybatis.study.start.bean.HelloWorld"&gt; &lt;property name="name" value="Yiibai" /&gt; &lt;/bean&gt; ``` list Map,provincecitymysqq

    spring Ioc容器配置

    &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt; &lt;property name="driverClassName"&gt; &lt;value&gt;org.gjt.mm.mysql.Driver &lt;property name="url"&gt; ...

    spring基础

    @Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将 @Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,...

    Spring入门.docx

    (1)DI注入属性:name为set方法去掉set之后首字母小写,ref为bean的id,需要有set方法,Spring会自动调用进行注入 (2)BeanFactory与ApplicationContext: ApplicationContext内部封装了BeanFactory,功能更加强大...

Global site tag (gtag.js) - Google Analytics