@Override
    protected Action processActionCreate(HttpServletRequest request,
                                         HttpServletResponse response, ActionMapping mapping) throws IOException {

        // Acquire the Action instance we will be using (if there is one)
        String className = mapping.getType();

        if (logger.isDebugEnabled()) {
            logger.debug(" Looking for Action instance for class " + className);
        }

        // try to get action instance from spring web application context
        Action instance = null;
        try {
            Class<?> clazz = ClassUtils.forName(className, ClassUtils.getDefaultClassLoader());
            Assert.isAssignable(Action.class, clazz);
            WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());

            if (logger.isDebugEnabled()) {
                logger.debug("Looking for \"{}\" instance in spring app context", className);
            }

            instance = context.getBean((Class<Action>)clazz);

            if (instance.getServlet() == null) {
                instance.setServlet(this.servlet);
            }

            synchronized (actions) {
                actions.put(className, instance);
            }

        } catch (ClassNotFoundException ex) {
            logger.error("Could find class {}", className);
        } catch (NoSuchBeanDefinitionException ex) {
            logger.error("Could find class {} in spring web app context", className);
        }

        // if we couldn't get the instance from spring context then create it through the struts
        if (instance == null) {
            instance = super.processActionCreate(request, response, mapping);
        }

        return instance;
    }