1. 程式人生 > >Test測試:Spring 注入失敗,空指標

Test測試:Spring 注入失敗,空指標

問題描述

使用註解無法注入例項,出現空指標異常。若不用註解,直接new一個例項,可以正常執行

控制檯輸出

這裡寫圖片描述

異常發生點

    @Resource
    private UserService userService;

    private LocalDateTime time = LocalDateTime.now();

    @Test
    public void addUser() throws Exception {
        SysUser sysUser = new SysUser();
        sysUser.setUsername("admin"
); sysUser.setPassword("admin"); sysUser.setCreateTime(time); sysUser.setLoginTime(time); sysUser.setLoginIp("192.168.1.1"); sysUser.setLogoutTime(time); sysUser.setEnabled(true); logger.info("---sysUser:{}",sysUser); userService.addUser(sysUser); //這裡出現空指標異常
}

Service檔案

/**
 * 業務層--使用者
 */
@Service
public class UserServiceImpl implements UserService {

    @Resource
    private BaseService baseService;

    @Resource
    private UserDao userDao;

    private Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);

    /**
     * 增加:使用者
     * 資料庫:sys_user
     *
     * @param
sysUser 使用者 */
@Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void addUser(SysUser sysUser) { logger.info("---baseService:{}", baseService); try { logger.info("---sysUserOld:{}", sysUser); SysUser user = baseService.passwordHelper(sysUser); logger.info("---sysUserNew:{}", user); userDao.save(user); } catch (Exception e) { logger.info("---新增使用者:出現異常"); e.printStackTrace(); } } }

配置檔案

Spring:applicationContext.xml
    <!--配置自動掃描的包-->
    <context:annotation-config/>
    <context:component-scan base-package="com.security.demo.service"/>
    <context:component-scan base-package="com.security.demo.dao"/>

SpringMVC:spring-mvc.xml 
    <!--配置自動掃描的包-->
    <context:component-scan base-package="com.security.demo.controller"/>

包掃描沒有衝突。假若包有衝突,可以看這裡解釋

發現關鍵

在處理過程中,突然發現,不通過 Test,使用Controller呼叫Service,又能正常執行,那麼問題出現在Test檔案這裡。

解決

Test檔案放的位置不對,test檔案放在main裡面去了。

maven標準目錄結構
這裡寫圖片描述