Spring4新特性——泛型限定式依赖注入
来源:互联网 发布:java jdk下载官网 编辑:程序博客网 时间:2024/06/05 16:02
Spring 4.0已经发布RELEASE版本,不仅支持Java8,而且向下兼容到JavaSE6/JavaEE6,并移出了相关废弃类,新添加如Java8的支持、Groovy式Bean定义DSL、对核心容器进行增强、对Web框架的增强、Websocket模块的实现、测试的增强等。其中两个我一直想要的增强就是:支持泛型依赖注入、对cglib类代理不再要求必须有空参构造器了。具体更新请参考:
http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#new-in-4.0
1、相关代码:
1.1、实体
- public class User implements Serializable {
- private Long id;
- private String name;
- }
- public class Organization implements Serializable {
- private Long id;
- private String name;
- }
1.2、Repository
- public abstract class BaseRepository<M extends Serializable> {
- public void save(M m) {
- System.out.println("=====repository save:" + m);
- }
- }
- @Repository
- public class UserRepository extends BaseRepository<User> {
- }
- @Repository
- public class OrganizationRepository extends BaseRepository<Organization> {
- }
对于Repository,我们一般是这样实现的:首先写一个模板父类,把通用的crud等代码放在BaseRepository;然后子类继承后,只需要添加额外的实现。
1.3、Service
1.3.1、以前Service写法
- public abstract class BaseService<M extends Serializable> {
- private BaseRepository<M> repository;
- public void setRepository(BaseRepository<M> repository) {
- this.repository = repository;
- }
- public void save(M m) {
- repository.save(m);
- }
- }
- @Service
- public class UserService extends BaseService<User> {
- @Autowired
- public void setUserRepository(UserRepository userRepository) {
- setRepository(userRepository);
- }
- }
- @Service
- public class OrganizationService extends BaseService<Organization> {
- @Autowired
- public void setOrganizationRepository(OrganizationRepository organizationRepository) {
- setRepository(organizationRepository);
- }
- }
可以看到,以前必须再写一个setter方法,然后指定注入的具体类型,然后进行注入;
1.3.2、泛型Service的写法
- public abstract class BaseService<M extends Serializable> {
- @Autowired
- protected BaseRepository<M> repository;
- public void save(M m) {
- repository.save(m);
- }
- }
- @Service
- public class UserService extends BaseService<User> {
- }
- @Service
- public class OrganizationService extends BaseService<Organization> {
- }
大家可以看到,现在的写法非常简洁。支持泛型式依赖注入。
这个也是我之前非常想要的一个功能,这样对于那些基本的CRUD式代码,可以简化更多的代码。
如果大家用过Spring data jpa的话,以后注入的话也可以使用泛型限定式依赖注入 :
- @Autowired
- private Repository<User> userRepository;
0 0
- Spring4新特性:泛型限定式依赖注入
- Spring4新特性:泛型限定式依赖注入
- Spring4新特性:泛型限定式依赖注入
- Spring4新特性:泛型限定式依赖注入
- Spring4新特性——泛型限定式依赖注入
- Spring4新特性——泛型限定式依赖注入
- Spring4新特性——泛型限定式依赖注入
- Spring4新特性——泛型限定式依赖注入
- Spring4新特性——泛型限定式依赖注入
- Spring4.0新特性--泛型依赖注入
- Spring4.0之后的新特性--泛型依赖注入
- Spring-13:泛型依赖注入(Spring4.X新特性)
- Spring之泛型依赖注入---spring4.0的新特性
- Spring4学习笔记-泛型依赖注入
- 浅谈spring4泛型依赖注入
- spring4.0之泛型依赖注入
- Spring -- 4.0新特性 -- 泛型依赖注入
- Spring 4.x 新特性:泛型依赖注入
- SharePoint User Profile Services Application之(四) -Promoted Sites
- ERP系统咨文
- OJ刷题二——转换日期格式
- Ubuntu最全问题汇总(好东西分享了)
- 2014热门网络词汇汇总
- Spring4新特性——泛型限定式依赖注入
- UIAlertView的使用方法
- Mysql在大型网站的应用架构演变
- OPNET 点击运行后报编译的错误
- Qt学习之路[Qt Creator](1)Error while building/deploying project
- 叶笑嘴角露出来一个不知是什么意味的笑容
- H264基本概念:图像、帧、片、NALU
- 【YC创业课】硅谷新老两代投资教父出场,拉家常聊如何融资
- 产品经理和系统需求工程师有什么区别?