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. bzoj 1499: [NOI2005]瑰丽华尔兹【dp+单调队列】

    设f[a][i][j]为第a段时间结束时在(i,j)位置的最长滑行距离,转移很好想,就是分四个方向讨论,然后枚举这段时间的滑行长度取个max即可 但是这样是O(n^4)的,考虑优化 发现同一行或列,取 ...

  2. bzoj 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛【dp】

    设f[i]为i为牡牛的方案数,f[0]=1,s为f的前缀和,f[i]=s[max(i-k-1,0)] #include<iostream> #include<cstdio> u ...

  3. 【Aizu - 0005 】GCD and LCM

    GCD and LCM Descriptions: Write a program which computes the greatest common divisor (GCD) and the l ...

  4. UTF-8格式的文本文件程序读取异常

    最近在windows服务器上直接创建并手打输入配置参数,比如设置概率0.6,然后用java程序打开读取该参数,在本地linux环境下测试完全正常,但是一放到服务器上,就报NotNumber错误,查看了 ...

  5. mysql远程备份

    相关链接:https://blog.csdn.net/LiuHuan_study/article/details/81512831https://www.cnblogs.com/ryanzheng/p ...

  6. php 打包下载

    <?php class zipfile { var $datasec = array (); var $ctrl_dir = array (); var $eof_ctrl_dir = &quo ...

  7. UOJ228 简单数据结构练习题

    Description 传送门 维护一个数列, 有以下操作: 对[l,r]同时加上x 把[l,r]开根后下取整. 查询[l,r]之和 n,m \(\leq\)$ 100000, $\(a_i,x \l ...

  8. Base64编码与解码 分类: 中文信息处理 2014-11-03 21:58 505人阅读 评论(0) 收藏

    Base64是一种将二进制转为可打印字符的编码方法,主要用于邮件传输.Base64将64个字符(A-Z,a-z,0-9,+,/)作为基本字符集,把所有符号转换为这个字符集中的字符. 编码: 编码每次将 ...

  9. Vue自定义过滤器格式化数字三位加一逗号

    <template> <div class="index-compont"> <div class="totalCount"> ...

  10. 等待进程结束函数中的BUG

    偶然发现一个BUG,有一个函数是这样写的: void WaitProcExit(DWORD dwPid) { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACC ...