Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用

BaseService<T>:有RoleService和UserService两的子类

BaseRepepositry<T>:有UserRepository和RoleRepositry两个子类

由于 BaseService<T>和 BaseRepepositry<T> 有关系所以,得出下面的子类也存在这样的关系

package generic.di; 

public class BaseRepository<T> { } 

————————————————————————————————————————————————————————————————————————————————————————————————————————————————
package generic.di; import org.springframework.beans.factory.annotation.Autowired; public class BaseService<T> { @Autowired
protected BaseRepository<T> repository; public void add() {
System.out.println("add");
System.out.println(repository);
}
}
package generic.di;

import org.springframework.stereotype.Repository;

@Repository
public class RoleRepository extends BaseRepository<Organization> {
}

—————————————————————————————————————————————————————————————————————————————————————————————————————————————— package generic.di;
import org.springframework.stereotype.Service; @Service
public class RoleService extends BaseService<Organization> {
}

——————————————————————————————————————————————————————————————————————————————————————————————————————————————
package generic.di; public class Organization {
}
package generic.di;

public class User {
}
——————————————————————————————————————————————————————————————————————————————————————————————————————————————
package generic.di; import org.springframework.stereotype.Repository; @Repository
public class UserRepository extends BaseRepository<User> { } ——————————————————————————————————————————————————————————————————————————————————————————————————————————————
package generic.di; import org.springframework.stereotype.Service; @Service
public class UserService extends BaseService<User> {
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="generic.di">
</context:component-scan>
</beans>
package generic.di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("generic/di/15-1.xml");
UserService userService = (UserService) ctx.getBean("userService");
RoleService roleService = (RoleService) ctx.getBean("roleService");
userService.add();
roleService.add();
}
}

aaarticlea/png;base64,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" alt="" />

15Spring泛型依赖注入的更多相关文章

  1. Spring基础—— 泛型依赖注入

    一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. 二.泛型依赖注入:子类之间的依赖关系由其父类泛型以及父类之 ...

  2. Spring(十六):泛型依赖注入

    简介: Spring4.X之后开始支持泛型依赖注入. 使用示例: 1.定义实体 package com.dx.spring.bean.componentscan; import java.io.Ser ...

  3. Spring的泛型依赖注入

    Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用,(这样子类和子类对应的泛型类自动建立关系)具体说明: 泛型注入:就是Bean1和Bean2注入了泛型,并且Bean1和Bean ...

  4. 转载--浅谈spring4泛型依赖注入

    转载自某SDN-4O4NotFound Spring 4.0版本中更新了很多新功能,其中比较重要的一个就是对带泛型的Bean进行依赖注入的支持.Spring4的这个改动使得代码可以利用泛型进行进一步的 ...

  5. Spring初学之泛型依赖注入

    主要讲泛型依赖注入,所以核心在java文件,配置文件中只需配置扫描包即可,如下: <?xml version="1.0" encoding="UTF-8" ...

  6. Autofac 泛型依赖注入

    using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...

  7. Spring4学习回顾之路10-Spring4.x新特性:泛型依赖注入

    泛型依赖注入:Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用. 话语太过抽象,直接看代码案例,依次建立如下代码: User.java package com.lql.sprin ...

  8. 【串线篇】spring泛型依赖注入原理

    spring泛型依赖注入原理 不管三七二十一 servlet :加注解@servlet service:加注解@service dao:加注解@Repository 这相当于在容器中注册这些个类

  9. Spring新特性_泛型依赖注入

    泛型依赖注入 package com.tanlei.spring.generic; import org.springframework.beans.factory.annotation.Autowi ...

随机推荐

  1. [Swift通天遁地]一、超级工具-(5)使用UIWebView(网页视图)加载本地页面并调用JavaScript(脚本)代码

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. How to Compare Means (均值比较)

    在比较数据的均值时,我们可能知道: 比较工厂当天生产的零件的长度是否合格 (length >= N mm),用 t-Test; 比较各一线城市的人均收入,用 ANOVA. 其实均值比较还有很多检 ...

  3. .Net Core之Configuration

    ASP.NET CORE 中自动集成了应用配置,支持从以下 源 处获取配置键值对 命令行 环境变量 内存 文件配置 其中文件配置是我们最常用的方式,默认文件是.json的json格式文件,摒弃了以往. ...

  4. Java SE 第二篇

    二.  Java SE 第二篇 1.  Arrays 数组 // 声明一维数组,[]内不允许有值 int[] arr; int arr[]; // 创建一维数组对象,[]内必须有值 arr = new ...

  5. Android 内存溢出处理方案

    转自 : http://www.cnblogs.com/hello-ruby/archive/2013/04/19/3031098.html 首先我们来看看android内存溢出的原因,有可能是: 由 ...

  6. performClick()方法的使用

    performClick 是使用代码主动去调用控件的点击事件(模拟人手去触摸控件) 例如: 添加Ctrl+s 快捷键 保存,并触发btnSave按钮事件 protected override bool ...

  7. mac下 netbeans 8.02中文版设置代码自动补齐 + eclipse自动补齐

    netbeans自带的自动补齐快捷键是commad+\ 我想要的是在输入的时候,有自动提示,找了半天也没找到怎么搞. 因为我是用的mac系统 后来参考其他的设置,找到了设置的方法,把这个方法记录一下. ...

  8. 安装Kube

    安装Docker yum install -y docker 加速Docker DOCKER_MIRRORS="https://5md0553g.mirror.aliyuncs.com&qu ...

  9. hdu 1695 GCD 欧拉函数 + 容斥

    http://acm.hdu.edu.cn/showproblem.php?pid=1695 要求[L1, R1]和[L2, R2]中GCD是K的个数.那么只需要求[L1, R1 / K]  和 [L ...

  10. [转]Visual F# Samples and Walkthroughs

    本文转自:http://msdn.microsoft.com/en-US/library/vstudio/ee241126.aspx This topic provides links to samp ...