Spring中使用name、alias给Bean起别名

Spring中如果出现使用多个名字引用同一个bean的情况,那么不用每次都去像一般那样再去定义一个bean,比如下面这样的情况:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="userLoginService" class="login.service.impl.LoginServiceImpl" autowire="byName" />
	<bean id="managerLoginService" class="login.service.impl.LoginServiceImpl" autowire="byName" />
	<bean id="guestLoginService" class="login.service.impl.LoginServiceImpl" autowire="byName" />
	
</beans>

如上所示,userLoginService、managerLoginService、guestLoginService都是对login.service.impl.LoginServiceImpl的引用,那么上面的这种可以使用如下两种方式去改写:

(1)在bean中使用name

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="loginService" name="managerloginService,guestloginService" class="login.service.impl.LoginServiceImpl" autowire="byName" />
	
</beans>

在bean定义的时候,可以使用name属性添加一个或多个其他的别名。

(2)在bean外使用alias

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<alias name="loginService" alias="managerloginService,guestloginService"/>
	<bean id="loginService" class="login.service.impl.LoginServiceImpl" autowire="byName" />
	
</beans>

如上内容,也可以参考官方文档的“Aliasing a bean outside the bean definition”部分。

本文标题:Spring中使用name、alias给Bean起别名

本文链接:http://yedward.net/?id=176

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章