struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4554) Spring BeanPostProcessor(s) are called twice for Struts constructed objects.
Date Wed, 21 Oct 2015 13:25:28 GMT

    [ https://issues.apache.org/jira/browse/WW-4554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14966802#comment-14966802
] 

Lukasz Lenart commented on WW-4554:
-----------------------------------

I think I got it, these two lines should be dropped
{code:java}
                bean = autoWiringFactory.applyBeanPostProcessorsBeforeInitialization(bean,
bean.getClass().getName());
                ...
                bean = autoWiringFactory.applyBeanPostProcessorsAfterInitialization(bean,
bean.getClass().getName());
{code}

as

{code:java}
                bean = autoWiringFactory.initializeBean(bean, bean.getClass().getName());
{code}

does the job, right?

> 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)

Mime
View raw message