Spring Bean 的命名
1、Xml中
- 1.1、一般情况下,我们使用
id
属性对Bean命名。
id
在配置文件中必须是唯一的。- 同时指定多个
id
,用逗号,
隔开。 id
命名是XML
协议规定的:必须以字母
开始,后面可以是字母
、数字
、连字符(-)
、下划线(_)
、点(.)
、冒号(:)
<bean id="car" class="com.xych.bean.Car" />
<bean id="user,person" class="com.xych.bean.User" />
- 1.2、如果希望用一些特殊字符来命名,可以使用
name
属性
- 可以重复。允许存在name相同的两个或以上的Bean。
- 通过name属性getBean时,获取的是
后定义
的Bean。 - name属性没有字符上的限制,几乎可以使用任何字符。
<bean name="cap" class="com.xych.bean.GlassCap" /> <!-- 玻璃杯 -->
<bean name="cap" class="com.xych.bean.PlasticCap" /> <!-- 塑料杯 -->
// 在getBean("cap")时,获取的是PlasticCap
- 1.3、
id
、name
均不指定
- Spring将Bean的
全限定类名
作为Bean的名称。 - 如果存在多个相同的bean,从第二个开始,getBean时需加上下标。
- Spring将Bean的
<bean class="com.xych.bean.Car" />
<bean class="com.xych.bean.Car" />
<bean class="com.xych.bean.Car" />
// getBean("com.xych.bean.Car")
// getBean("com.xych.bean.Car#1")
// getBean("com.xych.bean.Car#2")
2、注解中
@Component
、@Repository
、@Service
、@Controller
的value
属性为Bean的name- 未指定上面注解的value时,将
非限定类名
的首字母小写后的String作为name。
参考:
[1] 陈雄华,林开雄,文建国.精通Spring4.x 企业应用开发实战[M].北京:电子工业出版社,2017.1:154-155.