| public static final String | GENERATED_BEAN_NAME_SEPARATOR | Separator for generated bean names. If a class name or parent name is not
unique, "#1", "#2" etc will be appended, until the name becomes unique. |
| Method from org.springframework.beans.factory.support.BeanDefinitionReaderUtils Detail: |
public static AbstractBeanDefinition createBeanDefinition(String parentName,
String className,
ClassLoader classLoader) throws ClassNotFoundException {
GenericBeanDefinition bd = new GenericBeanDefinition();
bd.setParentName(parentName);
if (className != null) {
if (classLoader != null) {
bd.setBeanClass(ClassUtils.forName(className, classLoader));
}
else {
bd.setBeanClassName(className);
}
}
return bd;
}
Create a new GenericBeanDefinition for the given parent name and class name,
eagerly loading the bean class if a ClassLoader has been specified. |
public static AbstractBeanDefinition createBeanDefinition(String className,
String parentName,
ConstructorArgumentValues cargs,
MutablePropertyValues pvs,
ClassLoader classLoader) throws ClassNotFoundException {
AbstractBeanDefinition bd = createBeanDefinition(parentName, className, classLoader);
bd.setConstructorArgumentValues(cargs);
bd.setPropertyValues(pvs);
return bd;
} Deprecated! in - favor of createBeanDefinition(String, String, ClassLoader)
Create a new GenericBeanDefinition for the given
class name, parent, constructor arguments, and property values. |
public static String generateBeanName(BeanDefinition beanDefinition,
BeanDefinitionRegistry registry) throws BeanDefinitionStoreException {
return generateBeanName(beanDefinition, registry, false);
}
Generate a bean name for the given top-level bean definition,
unique within the given bean factory. |
public static String generateBeanName(BeanDefinition definition,
BeanDefinitionRegistry registry,
boolean isInnerBean) throws BeanDefinitionStoreException {
String generatedBeanName = definition.getBeanClassName();
if (generatedBeanName == null) {
if (definition.getParentName() != null) {
generatedBeanName = definition.getParentName() + "$child";
}
else if (definition.getFactoryBeanName() != null) {
generatedBeanName = definition.getFactoryBeanName() + "$created";
}
}
if (!StringUtils.hasText(generatedBeanName)) {
throw new BeanDefinitionStoreException("Unnamed bean definition specifies neither " +
"'class' nor 'parent' nor 'factory-bean' - can't generate bean name");
}
String id = generatedBeanName;
if (isInnerBean) {
// Inner bean: generate identity hashcode suffix.
id = generatedBeanName + GENERATED_BEAN_NAME_SEPARATOR + ObjectUtils.getIdentityHexString(definition);
}
else {
// Top-level bean: use plain class name.
// Increase counter until the id is unique.
int counter = -1;
while (counter == -1 || registry.containsBeanDefinition(id)) {
counter++;
id = generatedBeanName + GENERATED_BEAN_NAME_SEPARATOR + counter;
}
}
return id;
}
Generate a bean name for the given bean definition, unique within the
given bean factory. |
public static void registerBeanDefinition(BeanDefinitionHolder definitionHolder,
BeanDefinitionRegistry registry) throws BeanDefinitionStoreException {
// Register bean definition under primary name.
String beanName = definitionHolder.getBeanName();
registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());
// Register aliases for bean name, if any.
String[] aliases = definitionHolder.getAliases();
if (aliases != null) {
for (int i = 0; i < aliases.length; i++) {
registry.registerAlias(beanName, aliases[i]);
}
}
}
Register the given bean definition with the given bean factory. |
public static String registerWithGeneratedName(AbstractBeanDefinition definition,
BeanDefinitionRegistry registry) throws BeanDefinitionStoreException {
String generatedName = generateBeanName(definition, registry, false);
registry.registerBeanDefinition(generatedName, definition);
return generatedName;
}
Register the given bean definition with a generated name,
unique within the given bean factory. |