作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 spring boot 1.2.5.RELEASE。我定义了一个扩展 CrudRepository 的接口(interface)
public interface SampleEntityService extends CrudRepository<SampleEntity, Long> {...}
所以我的存储库将包含所有方法,例如:保存、删除等。我想禁用某些方法,例如删除,因此它会抛出 NotSupportedException(或其他)。
我的第一个想法是构建装饰器并覆盖所有这些方法并手动抛出异常。
这个问题有更好的解决方案吗?
最佳答案
我假设您想要这个用于 Jpa。
实现此目的的一种方法是使用自定义 JpaRepositoryFactoryBean
,将 RepositoryProxyPostProcessor
添加到禁用某些方法的 JpaRepositoryFactory
。
例如:
@Configuration
@EnableJpaRepositories(repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class)
public class MyConfig {
}
然后是类似的东西
public class CustomJpaRepositoryFactoryBean extends JpaRepositoryFactoryBean {
@Override
protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
JpaRepositoryFactory factory = JpaRepositoryFactory(entityManager);
factory.addRepositoryProxyPostProcessor(new RepositoryProxyPostProcessor() {
@Override
public void postProcess(ProxyFactory factory, RepositoryInformation repositoryInformation) {
factory.addAdvice(new MethodInterceptor() {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
if ("unsupportedMethod".equals(invocation.getMethod().getName())) {
throw new UnsupportedOperationException();
}
return invocation.proceed();
}
});
}
});
return factory;
}
}
关于java - CrudRepository OperationNotSupported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349875/
我使用 spring boot 1.2.5.RELEASE。我定义了一个扩展 CrudRepository 的接口(interface) public interface SampleEntitySe
本文整理了Java中org.eclipse.persistence.exceptions.XMLMarshalException.operationNotSupported()方法的一些代码示例,展示
我正在尝试开发一个 Grails 应用程序来调用一些 REST 服务...... 我正在尝试使用 Grails Rest Client Builder 插件...... 我已经尝试了几个版本的 Gra
我是一名优秀的程序员,十分优秀!