Spring4.3.7注解 @Autowired java.lang.NullPointerException
問題描述
UserAction中通過@Autowired注入UserServiceImpl無效,得到對象為空UserAction.java
@Namespace('/')@ParentPackage('struts-default')@Controllerpublic 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
@Servicepublic 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.xsdhttp://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 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 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 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 class='org.springframework.orm.hibernate5.HibernateTemplate'><!-- 通過工廠獲得session,操作PO類 --><property name='sessionFactory' ref='sessionFactory'></property> </bean> <!-- 事務管理 --> <!-- 事務管理器,就是平臺,spring工具產生, 依賴于使用 持久方案(hibernate、jdbc等) --> <bean 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>
問題解答
回答1:請保證UserServiceImpl在被掃描的包內。
回答2:注解的掃描有問題
回答3:我建議你看看UserDao是否正確注入,這條鏈子上有一個注入失敗了就會導致整體創建失敗
相關文章:
1. dockerfile - [docker build image失敗- npm install]2. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””3. javascript - 怎么實現讓 div 里面的 img 元素 中心居中, 如下示例圖4. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題5. java如何高效讀寫10G以上大文件6. docker不顯示端口映射呢?7. javascript - vue-router怎么不能實現跳轉呢8. javascript - IOS微信audio標簽不能通過touchend播放9. dockerfile - 我用docker build的時候出現下邊問題 麻煩幫我看一下10. 在windows下安裝docker Toolbox 啟動Docker Quickstart Terminal 失敗!
![dockerfile - [docker build image失敗- npm install]](https://m.cgvv.com.cn/attached/image/news/202311/1028105a80.png)