polishing
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1832 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
b408ef6f68
commit
e4c3adba2d
|
|
@ -65,8 +65,6 @@ public abstract class BeanUtils {
|
|||
* Convenience method to instantiate a class using its no-arg constructor.
|
||||
* As this method doesn't try to load classes by name, it should avoid
|
||||
* class-loading issues.
|
||||
* <p>Note that this method tries to set the constructor accessible
|
||||
* if given a non-accessible (that is, non-public) constructor.
|
||||
* @param clazz class to instantiate
|
||||
* @return the new instance
|
||||
* @throws BeanInstantiationException if the bean cannot be instantiated
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ public interface AutowireCapableBeanFactory extends BeanFactory {
|
|||
* @return the new bean instance
|
||||
* @throws BeansException if instantiation or wiring failed
|
||||
*/
|
||||
Object createBean(Class beanClass) throws BeansException;
|
||||
<T> T createBean(Class<T> beanClass) throws BeansException;
|
||||
|
||||
/**
|
||||
* Populate the given bean instance through applying after-instantiation callbacks
|
||||
|
|
|
|||
|
|
@ -278,11 +278,12 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||
// Typical methods for creating and populating external bean instances
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
public Object createBean(Class beanClass) throws BeansException {
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T createBean(Class<T> beanClass) throws BeansException {
|
||||
// Use prototype bean definition, to avoid registering bean as dependent bean.
|
||||
RootBeanDefinition bd = new RootBeanDefinition(beanClass);
|
||||
bd.setScope(SCOPE_PROTOTYPE);
|
||||
return createBean(beanClass.getName(), bd, null);
|
||||
return (T) createBean(beanClass.getName(), bd, null);
|
||||
}
|
||||
|
||||
public void autowireBean(Object existingBean) {
|
||||
|
|
@ -338,7 +339,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||
return autowireConstructor(beanClass.getName(), bd, null, null).getWrappedInstance();
|
||||
}
|
||||
else {
|
||||
Object bean = null;
|
||||
Object bean;
|
||||
final BeanFactory parent = this;
|
||||
|
||||
if (System.getSecurityManager() != null) {
|
||||
|
|
@ -419,38 +420,38 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||
protected Object createBean(final String beanName, final RootBeanDefinition mbd, final Object[] args)
|
||||
throws BeanCreationException {
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Creating instance of bean '" + beanName + "'");
|
||||
}
|
||||
// Make sure bean class is actually resolved at this point.
|
||||
resolveBeanClass(mbd, beanName);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Creating instance of bean '" + beanName + "'");
|
||||
}
|
||||
// Make sure bean class is actually resolved at this point.
|
||||
resolveBeanClass(mbd, beanName);
|
||||
|
||||
// Prepare method overrides.
|
||||
try {
|
||||
mbd.prepareMethodOverrides();
|
||||
}
|
||||
catch (BeanDefinitionValidationException ex) {
|
||||
throw new BeanDefinitionStoreException(mbd.getResourceDescription(),
|
||||
beanName, "Validation of method overrides failed", ex);
|
||||
}
|
||||
// Prepare method overrides.
|
||||
try {
|
||||
mbd.prepareMethodOverrides();
|
||||
}
|
||||
catch (BeanDefinitionValidationException ex) {
|
||||
throw new BeanDefinitionStoreException(mbd.getResourceDescription(),
|
||||
beanName, "Validation of method overrides failed", ex);
|
||||
}
|
||||
|
||||
try {
|
||||
// Give BeanPostProcessors a chance to return a proxy instead of the target bean instance.
|
||||
Object bean = resolveBeforeInstantiation(beanName, mbd);
|
||||
if (bean != null) {
|
||||
return bean;
|
||||
}
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
throw new BeanCreationException(mbd.getResourceDescription(), beanName,
|
||||
"BeanPostProcessor before instantiation of bean failed", ex);
|
||||
}
|
||||
try {
|
||||
// Give BeanPostProcessors a chance to return a proxy instead of the target bean instance.
|
||||
Object bean = resolveBeforeInstantiation(beanName, mbd);
|
||||
if (bean != null) {
|
||||
return bean;
|
||||
}
|
||||
}
|
||||
catch (Throwable ex) {
|
||||
throw new BeanCreationException(mbd.getResourceDescription(), beanName,
|
||||
"BeanPostProcessor before instantiation of bean failed", ex);
|
||||
}
|
||||
|
||||
Object beanInstance = doCreateBean(beanName, mbd, args);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Finished creating instance of bean '" + beanName + "'");
|
||||
}
|
||||
return beanInstance;
|
||||
Object beanInstance = doCreateBean(beanName, mbd, args);
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Finished creating instance of bean '" + beanName + "'");
|
||||
}
|
||||
return beanInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -917,7 +918,7 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||
*/
|
||||
protected BeanWrapper instantiateBean(final String beanName, final RootBeanDefinition mbd) {
|
||||
try {
|
||||
Object beanInstance = null;
|
||||
Object beanInstance;
|
||||
final BeanFactory parent = this;
|
||||
if (System.getSecurityManager() != null) {
|
||||
beanInstance = AccessController.doPrivileged(new PrivilegedAction<Object>() {
|
||||
|
|
@ -1467,10 +1468,6 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
|
|||
* Called by invokeInitMethods.
|
||||
* <p>Can be overridden in subclasses for custom resolution of init
|
||||
* methods with arguments.
|
||||
* @param beanName the bean name in the factory (for debugging purposes)
|
||||
* @param bean the new bean instance we may need to initialize
|
||||
* @param initMethodName the name of the custom init method
|
||||
* @param enforceInitMethod indicates whether the defined init method needs to exist
|
||||
* @see #invokeInitMethods
|
||||
*/
|
||||
protected void invokeCustomInitMethod(String beanName, final Object bean, RootBeanDefinition mbd) throws Throwable {
|
||||
|
|
|
|||
Loading…
Reference in New Issue