泛型依赖注入
来源:互联网 发布:淘宝蓝海选品软件 编辑:程序博客网 时间:2024/05/28 15:59
说明:spring 4.x 后允许子类注入子类对应带泛型类型的成员变量的引用,说白了就是任何实现了xxService<T> 类的子类(明确了泛型类型)例如:xxService<User>,都可以被xxService<T>这个父类接受,即由spring 注入给这个父类。
举例:
User.java
package com.yaspeed.spring.beans.generic.di;public class User {}
泛型类 BaseRepository<T>
package com.yaspeed.spring.beans.generic.di;public class BaseRepository<T> {}
泛型类BaseService<T> 有个成员变量,类型为BaseRepository<T> , 任何实现了BaseRepository<T>的子类,例如BaseRepository extends BaseRepository<User> 指定了泛型类型,即子类BaseReposiotry可以放入spring容器,然后注入给BaseRepository<T>类型的变量。
package com.yaspeed.spring.beans.generic.di;import org.springframework.beans.factory.annotation.Autowired;public class BaseService<T> {@Autowiredprotected BaseRepository<T> repository;public void add(){System.out.println("BaseService add....");System.out.println(repository);}}
将UserRepository 子类和UserService 子类放入spring容器中
package com.yaspeed.spring.beans.generic.di;import org.springframework.stereotype.Repository;@Repositorypublic class UserRepository extends BaseRepository<User>{}
package com.yaspeed.spring.beans.generic.di;import org.springframework.stereotype.Service;@Servicepublic class UserService extends BaseService<User>{}
测试方法:子类UserRepository 注入给了BaseRepository<T>类型的变量
package com.yaspeed.spring.beans.generic.di;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {public static void main(String[] args) {ApplicationContext cxt = new ClassPathXmlApplicationContext("beans-generic-di.xml");UserService userService = (UserService) cxt.getBean("userService");System.out.println(userService);userService.add();}}
0 0
- 泛型依赖注入
- 泛型依赖注入
- 泛型依赖注入
- 泛型依赖注入
- 泛型依赖注入
- 泛型依赖注入
- 泛型依赖注入
- spring 泛型依赖注入
- spring泛型依赖注入
- Spring 泛型依赖注入
- Spring 泛型依赖注入
- Spring 泛型依赖注入
- 十二泛型依赖注入
- Spring_泛型依赖注入
- Spring4学习笔记-泛型依赖注入
- 浅谈spring4泛型依赖注入
- Spring笔记3-泛型依赖注入
- spring4.0之泛型依赖注入
- FTP连接,上传,下载,删除文件方法
- 转--js代码放在head还是body里面
- 一些常用的字符串函数
- IOS 动画设计(1)——高内聚,低耦合原则
- 指针
- 泛型依赖注入
- ListView优化
- LightOJ - 1079 Just another Robbery 概率 + dp
- 一段有趣的并发concurrencyhashMap代码
- linux开机关机命令与登录注销命令
- 【LeetCode】 Two Sum
- c++11的新特性
- Swift学习记录 -- 11.函数的基本使用
- linux的vi比编译器开发java和c的步骤