将客户行为添加到 CDI 上下文中的所有 spring 个数据 Jpa 存储库

Add customer behaviour to all spring data Jpa repositories in CDI context

正在使用 CDI 成功注入 jpa 存储库。我想向所有存储库添加自定义行为(软删除)。使用 spring 时,我可以通过指定存储库基础来启用客户行为 class

@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)

如何在 CDI 中指定相同的内容?提前致谢。

以下是将自定义逻辑添加到存储库的方法:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

基本上您创建了一个名为 {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 实现。