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

时间:2022-09-14 19:08:12

问题描述

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

控制台输出

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

异常发生点

    @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 注入失败,空指针