我对整个Spring Boot和依赖注入都比较新,所以请原谅这里发生的任何noob事情。我正在构建API,并且在将依赖项注入POJO资源(DTO)时遇到问题。
当我在POJO this.numComments = commentSvc.getAllForPhoto(this.getId());
中调用该方法时,我得到一个NullPointerException。但是,当我从另一个spring-managed bean执行此操作并将值传递给构造函数时,它可以正常工作。
看完之后,看起来我需要对aspectJ和Load Time Weaving做些什么,但我不确定我的代码会是什么样子。
从本质上讲,我的方法看起来像这样:
PhotoResource.java (POJO)
public class PhotoResource extends BaseRepresentable {
@Autowired
CommentService commentSvc;
private Long id;
private Integer numComments;
PhotoResource(PhotoEntity entity){
super(entity);
this.setId(entity.getId);
this.numComments = commentSvc.getAllForPhoto(this.getId());
}
}
CommentService.java
@Service
public class CommentService{
public List<CommentResource> getAllForPhoto(Long photoId) {
// code to get all comments for photo
}
}
Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
答案 0 :(得分:1)
commentSvc
注入PhotoResource
课程,您需要使用@Component
或@Bean
或@Service
进行注释,例如:
@Component
public class PhotoResource extends BaseRepresentable {
@Autowired
CommentService commentSvc;
}
并确保此类的包已包含在@ComponentScan
个包中。
此外,以下不会编译:
@Service
public class CommentService(){
你不需要paranthesis声明一个类,它应该是:
@Service
public class CommentService{