Spring中,修改注入的bean名称

案例:

1)、源码

UserService.java

public interface UserService {}

UserServiceImpl.java 

@Service
@Transactional
public class UserServiceImpl implements UserService {}

 2)、上下文获取bean

系统注入bean时的默认名称是类名,首字符变成小写。

UserService userService = (UserService)xxx.getBean("userServiceImpl");

如果想修改bean名称,可通过如下方式:

1)、继承AnnotationBeanNameGenerator,重写generateBeanName生成器

public class CustomAnnotationBeanNameGenerator extends AnnotationBeanNameGenerator {

	/** 
	 * (non-Javadoc)
	 * @see org.springframework.context.annotation.AnnotationBeanNameGenerator#generateBeanName(org.springframework.beans.factory.config.BeanDefinition, org.springframework.beans.factory.support.BeanDefinitionRegistry)
	 */
	@Override
	public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
		String beanName = super.generateBeanName(definition, registry);
		return beanName.endsWith("Impl") ? beanName.substring(0, beanName.length() - 4) : beanName;
	}

}

2)、增加sping.xml配置

	<context:component-scan base-package="XXX.YYY.***.**" use-default-filters="false"
		name-generator="XXX.YYY.ZZ.CustomAnnotationBeanNameGenerator">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

3)、上下文获取Bean

UserService userService = (UserService)xxx.getBean("userService");

 

转载于:https://my.oschina.net/u/2246951/blog/782728

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值