Spring Data中手动实现Repository方法
2015-09-09 19:50
447 查看
Spring Data中Repository或者其子接口各种类型的操作都是由Spring Data的基础设施实现的,要么通过背后的实
现类,要么就是通过查询执行引擎。当构建应用程序的时候,这两种场景可能会覆盖你大部分数据访问操作。但是,但
某些场景下你可能需要手动实现代码。在Spring Data中,手动实现操作需要在类中遵循一定的命名规范。
package com.silence.springdata.custom;
interface CustomRepositoryCustom {
Person customMethod();
}
package com.silence.springdata.custom;
class CustomRepositoryImpl implements CustomRepositoryCustom {
@Override
public Person customMethod() {
//自定义方法代码
return null;
}
}
接口和实现类均不需要了解Spring Data的任何事情。它与使用Spring手动实现代码非常类似。按照Spring Data来
看,这个代码片段最有意思的地方在于实现类的名字遵循了命名规范,也就是核心Repository接口(例如在上面我们
的例子中CustomRepository )的名字上加上Impl后缀。同时需要注意的是。我们将接口和实现类都设置为包内私有,
从而阻止从包外访问它们。最后一步是修给Repository接口的声明,使其扩展刚刚引入的接口。
package com.silence.springdata.custom;
import org.springframework.data.repository.CrudRepository;
public interface CustomRepository extends CrudRepository<Person, Integer>,CustomRepositoryCustom {
//..................
}
现在,我们已经将CustomRepository暴露的API引入到CustomRepositoryTest中心点。客户端代码现在
就可以调用CustomRepositoryTest.customMethod()方法了。但是,这个实现类会如何被发现并至于最终执行的代理
之中呢?实际上,Respository的启动过程看起来是这样子的。
1.发现repository接口。(如CustomRepository)
2.尝试寻找一个Bean定义,这个Bean的名字为接口的小写形式并添加Impl后缀(如CumtomRepositoryImpl),若找到,就使用它。
3.如果没有找到,我们会扫描寻找一个类,这个类的名字为核心Repository接口的名字并添加Impl后缀。
4.找到的自定义实现类将会自动装配到被发现接口的代理配置中并且在方法调用时作为潜在的目标类。
现类,要么就是通过查询执行引擎。当构建应用程序的时候,这两种场景可能会覆盖你大部分数据访问操作。但是,但
某些场景下你可能需要手动实现代码。在Spring Data中,手动实现操作需要在类中遵循一定的命名规范。
package com.silence.springdata.custom;
interface CustomRepositoryCustom {
Person customMethod();
}
package com.silence.springdata.custom;
class CustomRepositoryImpl implements CustomRepositoryCustom {
@Override
public Person customMethod() {
//自定义方法代码
return null;
}
}
接口和实现类均不需要了解Spring Data的任何事情。它与使用Spring手动实现代码非常类似。按照Spring Data来
看,这个代码片段最有意思的地方在于实现类的名字遵循了命名规范,也就是核心Repository接口(例如在上面我们
的例子中CustomRepository )的名字上加上Impl后缀。同时需要注意的是。我们将接口和实现类都设置为包内私有,
从而阻止从包外访问它们。最后一步是修给Repository接口的声明,使其扩展刚刚引入的接口。
package com.silence.springdata.custom;
import org.springframework.data.repository.CrudRepository;
public interface CustomRepository extends CrudRepository<Person, Integer>,CustomRepositoryCustom {
//..................
}
现在,我们已经将CustomRepository暴露的API引入到CustomRepositoryTest中心点。客户端代码现在
就可以调用CustomRepositoryTest.customMethod()方法了。但是,这个实现类会如何被发现并至于最终执行的代理
之中呢?实际上,Respository的启动过程看起来是这样子的。
1.发现repository接口。(如CustomRepository)
2.尝试寻找一个Bean定义,这个Bean的名字为接口的小写形式并添加Impl后缀(如CumtomRepositoryImpl),若找到,就使用它。
3.如果没有找到,我们会扫描寻找一个类,这个类的名字为核心Repository接口的名字并添加Impl后缀。
4.找到的自定义实现类将会自动装配到被发现接口的代理配置中并且在方法调用时作为潜在的目标类。
相关文章推荐
- struts2的constant配置
- struts2之constant 讲解
- Struts2 常用的常量配置
- java 排序算法---插入排序
- Spring MVC介绍
- Java ClassLoader
- struts2处理.do后缀的请求
- 浅谈java单例模式——优点以及为什么使用到synchronized
- Java环境变量的搭建
- Java泛型中的标记符含义
- java上传图片放大(小图等比放大,大图等比裁剪)
- Java quartz 定时任务
- java中将type=date的时间转换成北京时间,并返回字符串型
- java中split()在遇到空有时不能成功分隔
- 从别人那淘的知识 深入剖析Java中的装箱和拆箱
- java学习日记4
- JAVA异常处理机制
- java生成二维码
- java list两个接口可选择性判断包含元素
- springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置