存储库自动连接返回 null
Repository autowired returning null
我想制作一个 Spring 后端启动和前端 Swing 的应用程序。我需要在我的服务 class 上使用自动装配的存储库,当我需要实例化服务 class 时如何实现?
我已经尝试将存储库更改为 BeanFactory,尝试更改文件的位置但我无法逃脱!我需要实例化服务 class 并且自动装配不适用于此。
我有一个名为 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
堆栈:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.riTrap.service.PermissionService.loadAll(PermissionService.java:20)
您应该使用自动装配而不是新的 PermissionService。您使用 loadAll 来检查数据库是否包含元素。如果数据库很大,这种方法可能会损坏您的应用程序。建议:改用计数
@Service
public class PermissionService {
@Autowired
PermissionRepository permissionRepository;
public List<Permission> loadAll() {
return permissionRepository.findAll();
}
public boolean isEmpty() {
return permissionRepository.count() == 0L;
}
}
如果你需要在使用前初始化bean,你可以使用构造函数:
@Service
public class BasicOperations {
@Autowired
public BasicOperations(PermissionService permissionService){
if(permissionService.isEmpty()){
//DO STUFF
}
}
}
我想制作一个 Spring 后端启动和前端 Swing 的应用程序。我需要在我的服务 class 上使用自动装配的存储库,当我需要实例化服务 class 时如何实现?
我已经尝试将存储库更改为 BeanFactory,尝试更改文件的位置但我无法逃脱!我需要实例化服务 class 并且自动装配不适用于此。
我有一个名为 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 堆栈:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.riTrap.service.PermissionService.loadAll(PermissionService.java:20)
您应该使用自动装配而不是新的 PermissionService。您使用 loadAll 来检查数据库是否包含元素。如果数据库很大,这种方法可能会损坏您的应用程序。建议:改用计数
@Service
public class PermissionService {
@Autowired
PermissionRepository permissionRepository;
public List<Permission> loadAll() {
return permissionRepository.findAll();
}
public boolean isEmpty() {
return permissionRepository.count() == 0L;
}
}
如果你需要在使用前初始化bean,你可以使用构造函数:
@Service
public class BasicOperations {
@Autowired
public BasicOperations(PermissionService permissionService){
if(permissionService.isEmpty()){
//DO STUFF
}
}
}