Java Spring@Autowired变量在@Component内为null
这是我的组件,它包含Java Spring@Autowired变量在@Component内为null,java,spring,autowired,Java,Spring,Autowired,这是我的组件,它包含userServiceauto-wired。问题是没有初始化,总是空的。用户服务在控制器上运行良好 应如何处理组件内部的autowire服务 package com.boro.orange.component; @组件(“modelUtil”) 公共类ModelUtil{ @自动连线 private UserService UserService;//null 静态记录器log=Logger.getLogger(ModelUtil.class.getName()); 公共模型
userService
auto-wired。问题是没有初始化,总是空的。用户服务在控制器上运行良好
应如何处理组件内部的autowire服务
package com.boro.orange.component;
@组件(“modelUtil”)
公共类ModelUtil{
@自动连线
private UserService UserService;//null
静态记录器log=Logger.getLogger(ModelUtil.class.getName());
公共模型映射扭曲(模型映射模型){
Object springUserObject=SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if(springUserObject==null | |!(springUserObject instanceof User)){
收益模型;
}
用户springUser=(用户)springUserObject;
字符串userEmailAddress=springUser.getUsername();
com.boro.orange.entity.User signedInUser=userService.getUserByEmailAddress(userEmailAddress);
if(signedInUser==null){
String errorMsg=“未能通过电子邮件地址[“+userEmailAddress+”]”找到用户;
log.error(errorMsg);
model.addAttribute(“错误”,errorMsg);
//TODO添加错误消息
}否则{
字符串userFirstName=SignedUser.getFirstName();
字符串userLastName=SignedUser.getLastName();
model.addAttribute(“userFirstName”,userFirstName);
model.addAttribute(“userLastName”,userLastName);
}
收益模型;
}
}
根上下文.xml
:
组件扫描只能使用一个定义。最后一个覆盖以前的定义
<context:component-scan base-package="com.boro.orange"/>
用户服务上是否有服务注释?你能添加限定符注释吗?@duffymo,是的,UserService可以从其他@Controller类中正常工作。看不出你在这段代码中做错了什么。你如何使用类ModelUtil
?如果您自己用newmodelutil()
实例化它,那么它不是一个Spring管理的bean,自动连接将不会完成。请参见:显示调用warp
的类。