【发布时间】:2020-06-22 05:32:07
【问题描述】:
在 Spring Boot 应用程序中,我有一个 AuditorAwareInterface 使用 @Autowired userService。
看起来像:
@Configuration
public class AuditorAwareConfiguration {
@Bean
public AuditorAware<Long> auditorAware() {
return new AuditorAware<Long>() {
@Autowired
private UserService userService;
@Override
public Long getCurrentAuditor() {
SecurityContext ctx = SecurityContextHolder.getContext();
Authentication authentication = ctx.getAuthentication();
if (authentication == null || !authentication.isAuthenticated()) {
return null;
}
User user = null;
Object principal = authentication.getPrincipal();
if (principal.getClass().equals(User.class)) {
user = (User) principal;
} else if (principal.getClass().equals(InetOrgPerson.class)) {
UserDetails userDetails = (UserDetails) principal;
String username = userDetails.getUsername();
UserDTO cond = new UserDTO();
cond.setUsername(username);
user = userService.findBasicOne(cond);
}
if (null == user) {
return null;
}
return user.getId();
}
};
}
}
它工作正常,但在控制器单元测试中,我有以下错误:
Error creating bean with name 'auditorAware': Unsatisfied dependency expressed through field 'userService';
我尝试使用@ContextConfiguration 初始化测试中的上下文:
@ContextConfiguration(classes = {
CompanyManagement.class,
CompanyManagementConfig.class,
CompanyController.class,
+ UserService.class,
}, initializers = ConfigFileApplicationContextInitializer.class)
如何修复我的单元测试?
【问题讨论】:
-
我认为
AuditorAwareConfiguration可以用不同的合成器来修复,@Configuration之后有什么加载的吗?
标签: java spring spring-boot spring-security spring-data