Logger logger = LoggerFactory.getLogger(CustomWebSecurityExpressionRoot.class);
@Autowired
private IUserService userService;
public CustomWebSecurityExpressionRoot(Authentication a, FilterInvocation fi) {
super(a, fi);
}
public boolean isOwner(Integer id) {
String username = ((UserDetails) getPrincipal()).getUsername();
User user = new User();
if (userService == null) {
logger.debug("USER SERVICE NULL");
}
try {
user = userService.findByUsername(username);
} catch (NullPointerException e) {
e.printStackTrace();
logger.debug("NULL");
}
return id == user.getId();
}
例外:
java.lang.NullPointerException
at waterfall.model.User.getId(User.java:62)
at waterfall.config.CustomWebSecurityExpressionRoot.isOwner(CustomWebSecurityExpressionRoot.java:37)
在其他类中,例如 controller ,它可以正常工作,但在userService上面的 class 中为null。我不知道为什么它为空。是什么导致我的问题?
答案 0 :(得分:0)
自动装配仅适用于弹簧组件,例如Service
,Controller
或组件。
您可以通过添加@Component
并扫描给定的路径来解决问题。但是,您应该查找此问题的后果。
答案 1 :(得分:0)
我只能找到两种无法自动布线的可能性:
1)您的CustomWebSecurityExpressionRoot尚未由Spring创建(您自己实例化了吗?)。
2)您的CustomWebSecurityExpressionRoot是最终的。