Chris Cranford created WW-4554:
----------------------------------
Summary: Spring BeanPostProcessor(s) are called twice for Struts
constructed objects.
Key: WW-4554
URL: https://issues.apache.org/jira/browse/WW-4554
Project: Struts 2
Issue Type: Bug
Components: Plugin - Spring
Affects Versions: 2.3.24
Reporter: Chris Cranford
Fix For: 2.3.25
It appears that the SpringObjectFactory in the xwork core at lines 194-197
manually yet when calling initializeBean on the autowire factory, the spring
framework automatically invokes these processors too which lead to the
following post processor's callbacks being invoked twice for both the before
and after handlers.
I confirmed that both Sprnig 3.0.5 and 4.2.1 have called the bean post
processors when the initializeBean function is called. See a simple
NullBeanPostProcessor implementation below that can be used as a simple test of
post processor invocation.
{code:title=NullBeanPostProcessor.java|borderStyle=solid}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
/**
* @since 7.0.0
*/
public class NullBeanPostProcessor implements BeanPostProcessor {
private static final Logger LOGGER =
LoggerFactory.getLogger(NullBeanPostProcessor.class);
/**
* {@inheritDoc}
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String
beanName)
throws BeansException {
LOGGER.debug("Before Initialization for {} ({})", beanName,
bean);
return bean;
}
/**
* {@inheritDoc}
*/
@Override
public Object postProcessAfterInitialization(Object bean, String
beanName)
throws BeansException {
LOGGER.debug("After Initialization for {} ({})", beanName,
bean);
return bean;
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)