gpt4 book ai didi

java - Autowiring 到非 Spring 托管类 (POJO) 时出现 NullPointerException - Spring Boot

转载 作者:行者123 更新时间:2023-12-02 12:58:50 24 4
gpt4 key购买 nike

我对 Spring Boot 和依赖注入(inject)总体来说还比较陌生,所以请原谅这里发生的任何菜鸟事情。我正在构建一个 API,但在将依赖项注入(inject) POJO 资源 (DTO) 时遇到问题。

当我调用 POJO 中的方法时 this.numComments = commentSvc.getAllForPhoto(this.getId()); 我收到 NullPointerException。但是,当我从另一个 spring 管理的 bean 执行此操作并将值传递到构造函数时,它工作正常。

阅读完后,看起来我需要使用方面J和加载时间编织做一些事情,但我不确定在我的代码中会是什么样子。

本质上,我的方法看起来像这样:

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);
}
}

最佳答案

除非您要求 Spring 容器管理 bean,否则 Spring 不会注入(inject)依赖项。为了将 commentSvc 注入(inject)到 PhotoResource 类中,您需要使用 @Component@Bean 对其进行注释或@Service,例如:

@Component
public class PhotoResource extends BaseRepresentable {
@Autowired
CommentService commentSvc;
}

并确保该类的包包含在@ComponentScan包中。

此外,以下内容将无法编译:

@Service
public class CommentService(){

声明类时不需要括号,它应该是:

@Service
public class CommentService{

关于java - Autowiring 到非 Spring 托管类 (POJO) 时出现 NullPointerException - Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44357561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com