簡體   English   中英

Spring Boot JPA空指針異常

[英]Spring boot JPA null pointer exception

我正在使用Spring Boot,JPA和H2開發JavaFx應用程序。 當我嘗試向數據庫中添加新用戶時,我有一個用戶實體,它會在按鈕的單擊操作上向控制器中拋出NPE。 如圖所示,我僅使用自動裝配符號。 我進行了研究,但發現沒有幫助。 有什么幫助嗎?

package com.core;

@SpringBootApplication
@Import(SharedSpringConfiguration.class)
public class Runner extends Application {

   private ConfigurableApplicationContext context;

   public static void main(String[] args) {
     launch(args);        
   }

   @Override
   public void init() {
    context = SpringApplication.run(Runner.class);
   }
}
package com.dao;

@Entity
@Table(name = "user")
public class User {

    @Id
    @Column(name = "id", updatable = false, nullable = false)
    private long ID;
    @Column(nullable = false)
    private String userName;
    @Column(nullable = false)
    private String userPass;

    public User() {
    }

    public User(long ID, String userName, String userPass) {
        this.ID = ID;
        this.userName = userName;
        this.userPass = userPass;
    }
}
package com.service;

@Service
public class UserService {

   @Autowired
   private UserRepository userRepository;

   public UserService() {
   }

   public void saveUser(User user) {
     userRepository.save(user);
   }
}
package com.repository;
public interface UserRepository extends CrudRepository<User, Long> {}
package com.controller

@Controller
public class MethodController implements Initializable {

  @Autowired
  private UserService userService;

  @FXML
  void methodSave(MouseEvent event) {
    userService.saveUser(new User(11, "TestUser", "noPass")); //Throws NPE. Indicates that userService is null. But I autowire the userService.
  }
}

我不知道SharedSpringConfiguration什么,但是您可能需要在其中一個配置類上使用@EnableJpaRepositories @Repository上CrudRepo應該是不必要的。

將您的SpringBootApplication軟件包從com.core更改為com

因為默認情況下,SpringBootApplication將僅掃描該軟件包和子軟件包。

其他

在SpringBootApplication中添加@ComponentScan批注並掃描軟件包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM