问题描述
使用注解无法注入实例,出现空指针异常。若不用注解,直接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标准目录结构