Author: mrdon Date: Tue Jun 17 06:09:09 2008 New Revision: 668645 URL: http://svn.apache.org/viewvc?rev=668645&view=rev Log: Adding new setting to force spring object factory to use configured autowire strategy WW-2479
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java struts/struts2/trunk/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=668645&r1=668644&r2=668645&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java Tue Jun 17 06:09:09 2008 @@ -118,9 +118,15 @@ */ public static final String STRUTS_MULTIPART_PARSER = "struts.multipart.parser"; - /** Whether Spring should autoWire or not */ + /** How Spring should autowire. Valid values are 'name', 'type', 'auto', and 'constructor' */ public static final String STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE = "struts.objectFactory.spring.autoWire"; + /** Whether the autowire strategy chosen by STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE is always respected. Defaults + * to false, which is the legacy behavior that tries to determine the best strategy for the situation. + * @since 2.1.3 + */ + public static final String STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE_ALWAYS_RESPECT = "struts.objectFactory.spring.autoWire.alwaysRespect"; + /** Whether Spring should use its class cache or not */ public static final String STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE = "struts.objectFactory.spring.useClassCache"; Modified: struts/struts2/trunk/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java?rev=668645&r1=668644&r2=668645&view=diff ============================================================================== --- struts/struts2/trunk/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java (original) +++ struts/struts2/trunk/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java Tue Jun 17 06:09:09 2008 @@ -50,6 +50,23 @@ @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE,required=false) String autoWire, @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE,required=false) String useClassCacheStr, @Inject ServletContext servletContext) { + this(autoWire, "false", useClassCacheStr, servletContext); + } + + /** + * Constructs the spring object factory + * @param autoWire The type of autowiring to use + * @param alwaysAutoWire Whether to always respect the autowiring or not + * @param useClassCacheStr Whether to use the class cache or not + * @param servletContext The servlet context + * @since 2.1.3 + */ + @Inject + public StrutsSpringObjectFactory( + @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE,required=false) String autoWire, + @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE_ALWAYS_RESPECT,required=false) String alwaysAutoWire, + @Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_USE_CLASS_CACHE,required=false) String useClassCacheStr, + @Inject ServletContext servletContext) { super(); boolean useClassCache = "true".equals(useClassCacheStr); @@ -85,6 +102,8 @@ this.setUseClassCache(useClassCache); + this.setAlwaysRespectAutowireStrategy("true".equalsIgnoreCase(alwaysAutoWire)); + LOG.info("... initialized Struts-Spring integration successfully"); } }