◎筱米加步枪◎.Blog

Happy coding

Sping中自定义默认注解名生成器

筱米加步枪 posted @ 2011年2月23日 09:23 in [ 开源框架 ] with tags spring , 3882 阅读

在类中贴上@Repository等标签,相当于在Spring容器里定义了一个Bean类,这个Bean的名称如果不指定名称,将默认使用当前类名(不含包名)的首字母小写作为Bean的名字.

需求:

要确保这个Bean名称要唯一,显然这样定义的Bean名称太过简单,比较容易造成一样情况,如果能使用全类名作为Bean可防止这样的情况,因为不存在全类名一样的类.例如:org.kirinsoft.frame.AClass

技术实现:

指定定义一个Bean名字生成器,实现Spring提供的BeanNameGenerator,在generateBeanName方法中设计出自己需要的Bean名称.

另外在Spring配置文件中的自动注解配置要指定名字生成器类,如:

	<!-- 自动注解配置 -->
	<context:annotation-config />
	<context:component-scan base-package="com.kirinsoft.frame"
		name-generator="com.kirinsoft.frame.pub.UniqueBeanNameGenerator" />

具体实现方法:

/**
 * 唯一Bean名称生成器.以类全名作为Bean名称.
 */
public class UniqueBeanNameGenerator implements BeanNameGenerator{

	@Override
	public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
		return definition.getBeanClassName();
	}
}

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter