【问题标题】:Spring data - Manual implementationSpring数据——手动实现
【发布时间】:2013-11-21 14:30:50
【问题描述】:

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

我想实际实现这个功能

getUserByFirstName() 

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

getUserById()

自动来自 spring-data。

1) 有可能吗?

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

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

【问题讨论】:

    标签: spring spring-data


    【解决方案1】:

    第一个要求见手册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?

    【讨论】:

      【解决方案2】:

      是的,你可以!!!

      Spring 数据中有一个惊人的功能允许这样做:

      1. 使用您的自定义方法创建接口:

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

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

        public class MySpringDataRepositoryImpl implements UserRepositoryCustom {
            public User getUserByFirstName(){
               //Your custom implementation
            }
        }
        

      现在,您只需在服务中注入 Spring 数据存储库,您可以同时使用两种方法:spring-data 实现方法和自定义实现方法:

      @Inject private MySpringDataRepository myRepository;
      

      就是这样!!

      查看文档中的此部分:

      Spring Data Custom implementations

      【讨论】:

        猜你喜欢
        • 2019-05-20
        • 1970-01-01
        • 2010-10-04
        • 1970-01-01
        • 2013-05-12
        • 2016-06-08
        • 2019-05-30
        • 2018-07-27
        相关资源
        最近更新 更多