package cn.org.rapid_framework.spring.beans.factory.support;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultBeanNameGenerator;
import org.springframework.util.StringUtils;
/**
* 用于生成spring bean名称,可以设置bean需要删除的前缀及后缀
* @author badqiu
*
*/
public class SmartBeanNameGenerator extends DefaultBeanNameGenerator{
String DEFAULT_REMOVE_SUFFIX = "impl";
String DEFAULT_REMOVE_PERFIX = "";
private String removedSuffix = DEFAULT_REMOVE_SUFFIX;
private String removedPrefix = DEFAULT_REMOVE_PERFIX;
public void setRemovedSuffix(String removedSuffix) {
this.removedSuffix = removedSuffix;
}
public void setRemovedPrefix(String removedPrefix) {
this.removedPrefix = removedPrefix;
}
public String generateBeanName(BeanDefinition definition,
BeanDefinitionRegistry registry) {
String id = super.generateBeanName(definition, registry);
return generateBeanName(id);
}
String generateBeanName(String generatedBeanName) {
String id = generatedBeanName;
if(id.toLowerCase().endsWith(removedSuffix.toLowerCase())) {
id = id.substring(0, id.length() - removedSuffix.length());
}
if(id.toLowerCase().startsWith(removedPrefix.toLowerCase())) {
id = id.substring(removedPrefix.length());
id = StringUtils.uncapitalize(id);
}
return id;
}
}