【发布时间】:2018-12-31 09:18:14
【问题描述】:
我正在使用 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.
}
}
【问题讨论】:
-
在您的
UserService课程中,您尝试自动连接UserRepository。UserRepository未设置为弹簧组件。尝试将@Repository添加到您的UserRepository课程中。 -
@gonzo,我已经试过了。它没有帮助
-
您尝试了哪个
@Repository标签?如果没有 spring 扫描,您将无法自动连接UserRepository。 -
@gonzo, org.springframework.stereotype.Repository;
-
@gonzo 不需要 @Repository 注释。它继承自
CrudRepository
标签: java spring-boot spring-data-jpa h2