Java 保存(对象)”,因为“this.userRepo”为空

Java 保存(对象)”,因为“this.userRepo”为空,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,当我发布数据时,我得到了这个错误 无法调用com.helpmydesk.Repo.UserRepo.saveObject,因为this.UserRepo为null 在com.helpmydesk.InterFaceAndService.ServiceClass.executeServiceClass.java:17~[classes/:na] 在com.helpmydesk.ControllerClass.executeControllerClass.java:27~[classes/:na]

当我发布数据时,我得到了这个错误

无法调用com.helpmydesk.Repo.UserRepo.saveObject,因为this.UserRepo为null 在com.helpmydesk.InterFaceAndService.ServiceClass.executeServiceClass.java:17~[classes/:na] 在com.helpmydesk.ControllerClass.executeControllerClass.java:27~[classes/:na] 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0Native Method~[na:na] 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:64~[na:na] 在java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43~[na:na]

主类

控制器类

存储库类

服务等级

用户类


UserRepo变量上没有@Autowired。您可以添加它;更好的修复方法是消除字段注入并使用普通构造函数。Spring在调用构造函数时将提供所有必要的依赖项,它使测试更容易,并且可以防止此类问题。

显然UserRepo为null。您永远不会使用它你的意思是自动连接吗?根据你的代码,你缺少一个私有UserRepo UserRepo的注入;用@Autowired注释该字段;或者使用一个接受UserRepo实例的构造函数,该实例将在bean创建时被注入。无论哪种方式注入实例。否则它将为null。当我使用@Auto时在私有UserRepo userRepo上;在COM.HelpMyDeStudio.IdFruteServices中获取错误字段USERPO需要一个类型为“COM.PrimyStudio.ReP. UserRepo”的bean。serRepo这在我看来似乎有点不对劲。它应该不是@EnableJpaRepositoriesbasePackages=com.helpmydesk.Repo,还是仅仅是@enableJParepositories,如果你能解释我如何解决这个问题。@user15038721我给你写了一个具体的解释。private UserRepo UserRepo;public serviceClasseuserrepo UserRepo UserRepo{this.UserRepo=UserRepo;}我已经试过了,但仍然遇到同样的错误。请帮助我。请帮助我解决这个问题
@EnableJpaRepositories("package com.helpmydesk.Repo.UserRepo")
@SpringBootApplication
public class HelpmydeskApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelpmydeskApplication.class, args);
    }
}
@Controller
public class ControllerClass {

     @Autowired 
    private InterfaceClass interfaceClass;
 
    public ControllerClass(InterfaceClass interfaceClass) {
        this.interfaceClass = interfaceClass;

    }

    @PostMapping("/doregister")
    public User execute(@RequestBody User user) {

        return this.interfaceClass.execute(user);

    }

    @RequestMapping("/")
    public String home() {
        return "home";

    }
    
    @RequestMapping("/singup")
    public String singup() {
        return "singup";
}
}
@Repository
public interface UserRepo extends CrudRepository<User, Integer> {

}
public interface InterfaceClass {
    public User execute(User user);
}
@Service
public class ServiceClass implements InterfaceClass {
    
    private UserRepo userRepo;
    
    public User execute(User user) {
        this.userRepo.save(user);
        return user;
    }
}
@org.hibernate.annotations.Entity
@Table(name = "USER")
public class User {
    
    
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private int id;
    private String name;
    @Column(unique = true)
    private String email;
    private String password;
    private String role;
    private boolean enabled;
    private String imageUrl;
    @Column(length = 500)
    private String about;
    
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
    private java.util.List<Blog> blogs = new ArrayList<>();
    
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public boolean isEnabled() {
        return enabled;
    }
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }
    public String getImageUrl() {
        return imageUrl;
    }
    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
    public String getAbout() {
        return about;
    }
    public void setAbout(String about) {
        this.about = about;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", email=" + email + ", password=" + password + ", role=" + role
                + ", enabled=" + enabled + ", imageUrl=" + imageUrl + ", about=" + about + "]";
    }
    }