Test测试:Spring 注入失败,空指针

问题描述

使用注解无法注入实例,出现空指针异常。若不用注解,直接new一个实例,可以正常运行

控制台输出

Test测试:Spring 注入失败,空指针_第1张图片

异常发生点

    @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标准目录结构
Test测试:Spring 注入失败,空指针_第2张图片

你可能感兴趣的:(常见问题解决)