Spring数据 - 手动实现

时间:2013-11-21 14:30:50

标签: spring spring-data

是否可以使用spring存储库编写自己的函数实现?

我想实际实现这个功能

getUserByFirstName() 

而不是自动获取它。 虽然我还想得到

getUserById()

自动从spring-data。

1)有可能吗?

2)是否有可能实现弹出数据自动生成的所有方法的日志记录? (或者我应该用

手动编写它们
logger.log("entering method ...");

2 个答案:

答案 0 :(得分:0)

有关第一个要求,请参阅手册的第1.3节:

http://docs.spring.io/spring-data/jpa/docs/1.4.2.RELEASE/reference/html/repositories.html#repositories.single-repository-behaviour

对于第二个要求,我想一些基于AOP的解决方案可能对你有用。请参阅此处,例如使用Spring的AOP支持:

logging with AOP in spring?

答案 1 :(得分:0)

是的,你可以!!!

Spring数据中有一个令人惊奇的功能允许:

  1. 使用自定义方法创建界面:

    public interface UserRepositoryCustom {
    
        User getUserByFirstName();
    }
    
  2. 使您的Spring Data接口扩展这个新接口,以及Spring数据crud接口(或JPA,Mongo或您正在扩展的任何弹簧数据接口):

    public interface MySpringDataRepository extends CrudRepository<User, Long>, UserRepositoryCustom {
    
    }
    
  3. 创建一个实现 自定义界面的类。该类的名称必须是Impl,例如:UserRepositoryImpl:

    public class MySpringDataRepositoryImpl implements UserRepositoryCustom {
        public User getUserByFirstName(){
           //Your custom implementation
        }
    }
    
  4. 现在,您只需要在服务中注入Spring数据存储库,并且可以使用这两种方法:spring-data实现方法和自定义实现方法:

    @Inject private MySpringDataRepository myRepository;
    

    那就是它!!

    请查看文档中的此部分:

    Spring Data Custom implementations