【发布时间】:2019-11-20 08:40:08
【问题描述】:
我想在后端使用 Spring boot 并在前端使用 Swing 来制作应用程序。我需要在我的服务类上使用自动装配的存储库,当我需要实例化服务类时如何制作它?
我已经尝试将存储库更改为 BeanFactory,尝试更改文件的位置但我无法逃脱!我需要实例化 Service 类,而 autowired 不适用于此。
我有一个名为 Permission 的模型。 存储库(PermissionRepository.java):
@Repository
public interface PermissionRepository extends JpaRepository<Permission, Long>{
Optional<Permission> findByDescription(String description);
}
服务(PermissionService.java):
@Autowired
BeanFactory beanFactory;
public List<Permission> loadAll() {
return this.beanFactory.getBean(PermissionRepository.class).findAll();
}
使用(BasicOperations.java):
public static void initialPermission() {
try {
if (new PermissionService().loadAll().isEmpty()) {
//logics
}
} catch(Exception e) {
...
}
}
我希望有一个列表 java.util.List 但错误是我的自动装配存储库上的 nullPointer 堆栈:
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 com.riTrap.service.PermissionService.loadAll(PermissionService.java:20)
【问题讨论】:
-
你正在创建一个
new PermissionService(),你应该在BasicOperations中Autowire你的服务(最好使用构造函数注入) -
对,我已经这样做了,但是同样的事情发生了。
code public static void initialPermission() { try { if (permissionService.loadAll().isEmpty()) { code添加在顶部code @Autowired static PermissionService permissionService; code需要是静态的,因为方法是静态的。即使这不是静态的,我也应该需要启动 BasicOperations,这样也不会工作。
标签: spring-data-jpa repository autowired