将客户行为添加到 CDI 上下文中的所有 spring 个数据 Jpa 存储库
Add customer behaviour to all spring data Jpa repositories in CDI context
正在使用 CDI 成功注入 jpa 存储库。我想向所有存储库添加自定义行为(软删除)。使用 spring 时,我可以通过指定存储库基础来启用客户行为 class
@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)
如何在 CDI 中指定相同的内容?提前致谢。
以下是将自定义逻辑添加到存储库的方法:
基本上您创建了一个名为 {YourRepositoryName}Custom
的自定义存储库
interface UserRepositoryCustom {
public void someCustomMethod(User user);
}
并实施它:
class UserRepositoryImpl implements UserRepositoryCustom {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
您的主存储库应扩展自定义存储库。
希望这对您有所帮助!
要将自定义行为添加到 Jpa 存储库(在您删除的情况下),
1. 创建一个基本存储库,如下所示:
@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
@Override
default void delete(T entity){
// your implementation
}
}
2. 现在从自定义存储库(即 BaseRepository)继承 Jpa 存储库,如下所示:
public interface EmployeeRepository extends BaseRepository<Employee, Long> {
}
3. 将您的存储库注入服务 class 并调用删除方法。
@Service
class EmployeeService {
@Inject
private EmployeeRepository employeeRepository;
public void delete(Long id) {
employeeRepository.delete(id);
}
}
现在,每当您对 BaseRepository 的子存储库调用 delete 时,都会调用您自定义的 delete 实现。
正在使用 CDI 成功注入 jpa 存储库。我想向所有存储库添加自定义行为(软删除)。使用 spring 时,我可以通过指定存储库基础来启用客户行为 class
@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)
如何在 CDI 中指定相同的内容?提前致谢。
以下是将自定义逻辑添加到存储库的方法:
基本上您创建了一个名为 {YourRepositoryName}Custom
interface UserRepositoryCustom {
public void someCustomMethod(User user);
}
并实施它:
class UserRepositoryImpl implements UserRepositoryCustom {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
您的主存储库应扩展自定义存储库。 希望这对您有所帮助!
要将自定义行为添加到 Jpa 存储库(在您删除的情况下),
1. 创建一个基本存储库,如下所示:
@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {
@Override
default void delete(T entity){
// your implementation
}
}
2. 现在从自定义存储库(即 BaseRepository)继承 Jpa 存储库,如下所示:
public interface EmployeeRepository extends BaseRepository<Employee, Long> {
}
3. 将您的存储库注入服务 class 并调用删除方法。
@Service
class EmployeeService {
@Inject
private EmployeeRepository employeeRepository;
public void delete(Long id) {
employeeRepository.delete(id);
}
}
现在,每当您对 BaseRepository 的子存储库调用 delete 时,都会调用您自定义的 delete 实现。