从外部 JAR 初始化 class bean - 构造函数问题
Initialize class bean from external JAR - constructor issue
我正在从外部服务导入 JAR。这是 服务 class 代码:
private final PermissionsRepository permissionsRepository;
@Autowired
public PermissionsServiceImpl(PermissionsRepository permissionsRepository) {
this.permissionsRepository = permissionsRepository;
}
public Collection<Permission> findAll() {
System.out.println("inside get all permissions");
return permissionsRepository.findAll();
}
而存储库是一个常规的 JPA 接口
public interface PermissionsRepository extends JpaRepository<Permission, PermissionTable> {}
我试图在其他程序中使用“findAll”方法,所以我从上面的项目创建了一个 JAR,导入了它,但我很难初始化服务 bean,因为我无法通过存储库作为参数。最好的方法是什么?
这是我目前在 BeanConfig class 中的内容(在导入 JAR 的 其他项目 中):
@Configuration
@EntityScan(basePackageClasses = {PermissionsRepository.class})
public class BeansConfig {
// need to create permissionRepository
@Bean
public PermissionsService permissionsService() {
return new PermissionsServiceImpl(???);
}
}
谢谢
已解决。
所需的更改在导入项目中的 服务 class 中。
@Service
@EntityScan(basePackages = {"com.demo.internal.myapp"})
@EnableJpaRepositories("com.demo.internal.myapp.permissions")
@ComponentScan(basePackages = { "com.demo.internal.myapp" })
public class PermissionsServiceImpl implements PermissionsService {
private PermissionsRepository permissionsRepository;
@Autowired
public PermissionsServiceImpl() {
}
@Autowired
public void setPermissionsService(PermissionsRepository permissionsRepository) {
this.permissionsRepository = permissionsRepository;
}
public Collection<Permission> findAll() {
System.out.println("inside get all permissions");
return permissionsRepository.findAll();
}
}
基本上,您需要告诉 spring 在哪里寻找实体模型对象、存储库等。所以我添加了 3 个注释:
EntityScan、EnableJpaRepositories 和 ComponentScan 可以做到这一点。
还为存储库变量进行了构造函数依赖注入。
我正在从外部服务导入 JAR。这是 服务 class 代码:
private final PermissionsRepository permissionsRepository;
@Autowired
public PermissionsServiceImpl(PermissionsRepository permissionsRepository) {
this.permissionsRepository = permissionsRepository;
}
public Collection<Permission> findAll() {
System.out.println("inside get all permissions");
return permissionsRepository.findAll();
}
而存储库是一个常规的 JPA 接口
public interface PermissionsRepository extends JpaRepository<Permission, PermissionTable> {}
我试图在其他程序中使用“findAll”方法,所以我从上面的项目创建了一个 JAR,导入了它,但我很难初始化服务 bean,因为我无法通过存储库作为参数。最好的方法是什么?
这是我目前在 BeanConfig class 中的内容(在导入 JAR 的 其他项目 中):
@Configuration
@EntityScan(basePackageClasses = {PermissionsRepository.class})
public class BeansConfig {
// need to create permissionRepository
@Bean
public PermissionsService permissionsService() {
return new PermissionsServiceImpl(???);
}
}
谢谢
已解决。
所需的更改在导入项目中的 服务 class 中。
@Service
@EntityScan(basePackages = {"com.demo.internal.myapp"})
@EnableJpaRepositories("com.demo.internal.myapp.permissions")
@ComponentScan(basePackages = { "com.demo.internal.myapp" })
public class PermissionsServiceImpl implements PermissionsService {
private PermissionsRepository permissionsRepository;
@Autowired
public PermissionsServiceImpl() {
}
@Autowired
public void setPermissionsService(PermissionsRepository permissionsRepository) {
this.permissionsRepository = permissionsRepository;
}
public Collection<Permission> findAll() {
System.out.println("inside get all permissions");
return permissionsRepository.findAll();
}
}
基本上,您需要告诉 spring 在哪里寻找实体模型对象、存储库等。所以我添加了 3 个注释: EntityScan、EnableJpaRepositories 和 ComponentScan 可以做到这一点。
还为存储库变量进行了构造函数依赖注入。