struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris <crisp...@gmx.us>
Subject Spring Injection Strange behaviour
Date Sat, 05 Sep 2015 12:47:26 GMT
I'm trying to use the Spring plugin to inject a dependency into my action at runtime. This
is the first time I've tried this with Struts2 so I may have missed something but I'm stumped
because I can see the dependency is injected but then the object is later null when I need
to use it. Here is my action class code:

public class UserRegisterAction extends ActionSupport {
    private User user = new User();

    @Override
    public String execute(){
        getUserService().saveUser(user);
        return "success";
    }

    public UserServiceImpl getUserService(){
        return userService;
    }

    UserServiceImpl userService;
    public void setUserService(UserServiceImpl us){
        this.userService = us;
    }
}

Using the debugger I can see that upon startup "setUserService is called and this.userService
is set, so the injection appears to be working ok, but when the execute method is called when
the page is submitted userService is null. I'm quite new to Struts but I don't understand
how my userService is being null.

Can anyone see what I am missing?


My applicationContext:


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
default-autowire="byName">

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>

    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"
/>
                <property name="database" value="MYSQL" />
                <property name="showSql" value="true" />
            </bean>
        </property>
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.gjt.mm.mysql.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/baseapp" />
        <property name="username" value="xxxxxx" />
        <property name="password" value="xxxxxx" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />

    <bean id="userService" class="com.xxxxx.service.UserServiceImpl" scope="prototype"/>

    <bean id="userAction" class="com.xxxxxx.action.UserRegisterAction">
        <property name="userService" ref="userService"/>
    </bean>

</beans>


Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

   <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message