Java 函数接口实现的Ref返回null
下面是虚拟代码,它是我原来问题的副本。我试图从另一个服务调用谓词,但返回为nullJava 函数接口实现的Ref返回null,java,spring-boot,Java,Spring Boot,下面是虚拟代码,它是我原来问题的副本。我试图从另一个服务调用谓词,但返回为null @Service public class CommonService { public Predicate<Student> isRegistered= student -> { boolean isRegistered = // call another service to check return isRegistered; }; }
@Service
public class CommonService {
public Predicate<Student> isRegistered= student -> {
boolean isRegistered = // call another service to check
return isRegistered;
};
}
@Service
public class StudentService {
@Autowired
CommonService commonService;
public void processStudentData(Student student){
if(commonService.isRegistered.test(student){
// do processing
}
}
}
@服务
公共类公共服务{
公共谓词isRegistered=学生->{
boolean isRegistered=//调用另一个服务进行检查
已登记退货;
};
}
@服务
公共班级学生服务{
@自动连线
公共服务公共服务;
public void processStudentData(学生){
if(commonService.isRegistered.test)(学生){
//处理
}
}
}
commonService.isRegistered返回为null您也应该将
commonService
a@组件
,并将isRegistered
逻辑重构为返回布尔值
而不是谓词的deDefected服务方法。是否可以用getter替换对字段的直接访问?尝试注释Student使用@Component
或@Service
进行服务
。同时使用日志更新您的问题。@Glains我已使用服务注释更新了代码。它已经存在于我的原始代码中,我忘了在此处添加。专用方法将起作用,但我需要一个谓词,因为在原始代码中链接是required@talex盖特威斯康星州我可以工作,但我需要一个谓词,因为在原始代码中需要链接
@Service
public class CommonService {
public Predicate<Student> isRegistered= student -> {
boolean isRegistered = // call another service to check
return isRegistered;
};
}
@Service
public class StudentService {
@Autowired
CommonService commonService;
public void processStudentData(Student student){
if(commonService.isRegistered.test(student){
// do processing
}
}
}