泛型依赖注入

朱雀 2022-07-26 06:07 215阅读 0赞

纸上得来终觉浅

关于泛型依赖注入,只明白它的思想,考虑了整个下午都不明确它所应用的场合,暂时把用法记下来,后面再学习整理。使用示例如下:

  1. public class User {
  2. }
  3. public class Respository<T>{
  4. }
  5. @Repository
  6. public class UserResponsitory extends Respository<User>{
  7. }
  8. public class Service1<T>{
  9. @Autowired
  10. private Respository<T> respository;
  11. public void save(){
  12. System.out.println("Service1.save():"+respository);
  13. }
  14. }
  15. @Service
  16. public class UserService<User> extends Service1<User>{
  17. }
  18. <context:component-scan base-package="com.roadArchitectWeb.inject"></context:component-scan>
  19. public class Main {
  20. public static void main(String[] args) {
  21. ApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml");
  22. UserService userService = (UserService)ctx.getBean("userService");
  23. userService.save();
  24. }
  25. }

输出结果:

  1. Service1.save():com.roadArchitectWeb.inject.UserResponsitory@aecb35a

可以看出泛型依赖注入其实关键不在于注入,而在于泛型, 具体注入哪一个bean是由泛型决定的。

private Responsitory responsitory, 会注入哪一个bean,是由Service的子类传过来的泛型决定的,传过来的是User,所以会注入 Responsitory的子类UserResponsitory,UserService中自然也包含了UserResponsitory这个bean。

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读

    相关 依赖注入

    纸上得来终觉浅 关于泛型依赖注入,只明白它的思想,考虑了整个下午都不明确它所应用的场合,暂时把用法记下来,后面再学习整理。使用示例如下: public class

    相关 Spring--依赖注入

    spring 4.x以上版本才有 创建两个带泛型的类,并配置两者的依赖关系,对于继承这两个类的子类,如果泛型相同,则会继承这种依赖关系: ![watermark_type