Spring4.3.7注解 @Autowired java.lang.NullPointerException
迷茫
迷茫 2017-04-18 10:54:46
0
3
925

UserAction中通过@Autowired注入UserServiceImpl无效,得到对象为空
UserAction.java

@Namespace("/")
@ParentPackage("struts-default")
@Controller
public class UserAction extends ActionSupport implements ModelDriven<User> {
    private User user = new User();

    public User getModel() {
        return this.user;
    }

    // *****************************
    @Autowired
    private UserService userService;

    @Action(value = "userAction_add", results = { @Result(name = "add", location = "/success.jsp") })
    public String add() {
        this.userService.saveUser(user);
        return "add";
    }
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Transactional
    public void saveUser(User user) {
        this.userDao.save(user);
    }

    @Transactional
    public void updateUser(User user) {
        this.userDao.update(user);
    }

    @Transactional
    public void deleteUser(User user) {
        this.userDao.delete(user);
    }

    @Transactional(readOnly = true)
    public User findUserById(Integer id) {
        return this.userDao.findById(id);
    }

    @Transactional(readOnly = true)
    public List<User> findAllUser() {
        return this.userDao.findAll();
    }
}

配置文件

<?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:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!-- 扫描 com包-->
    <context:component-scan base-package="com"></context:component-scan>
    <context:annotation-config/>
    <!-- 
    <context:property-placeholder location="classpath:redis.properties"/>
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
        <property name="maxIdle" value="${redis.pool.maxIdle}" />  
        <property name="maxTotal" value="${redis.pool.maxActive}" />   
        <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />   
        <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />  
        <property name="testOnReturn" value="${redis.pool.testOnReturn}" />  
    </bean>  -->
    
    <!--  加载c3p0-db.properties -->
    <context:property-placeholder location="classpath:c3p0-db.properties" />
    <!-- 配置dataSource数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    
    <!-- 1 配置SessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 1.1 配置数据源 -->
        <property name="dataSource" ref="dataSource"></property>
        <!-- 1.2 其他配置项 ,要使用hibernate全属性名,如果hibernate.不要省略 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQL5Dialect
                 </prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="javax.persistence.validation.mode">none</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
                <prop key=""></prop>
            </props>
        </property>
        
        <!-- 配置实体类 -->
        <property name="packagesToScan">
            <list>
                <value>com.entity</value>
            </list>
        </property>        
    </bean>
    <!-- 配置hibernate模板,必须使用模板 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
        <!-- 通过工厂获得session,操作PO类 -->
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 事务管理 -->
    <!-- 事务管理器,就是平台,spring工具产生, 依赖于使用 持久方案(hibernate、jdbc等) -->
    <bean id="txManager"
        class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 将事务管理注册spring * proxy-target-class="true": 
    使用cglib * proxy-target-class="false":有接口将使用 jdk -->
    <tx:annotation-driven transaction-manager="txManager" />
</beans>
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(3)
洪涛

Sila pastikan UserServiceImpl berada dalam pakej yang diimbas.

大家讲道理

Terdapat masalah dengan mengimbas anotasi

Ty80

Saya cadangkan anda menyemak sama ada UserDao disuntik dengan betul Jika satu suntikan gagal dalam rantai ini, keseluruhan ciptaan akan gagal

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan