15Spring泛型依赖注入
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泛型依赖注入的更多相关文章
- Spring基础—— 泛型依赖注入
一.为了更加快捷的开发,为了更少的配置,特别是针对 Web 环境的开发,从 Spring 4.0 之后,Spring 引入了 泛型依赖注入. 二.泛型依赖注入:子类之间的依赖关系由其父类泛型以及父类之 ...
- Spring(十六):泛型依赖注入
简介: Spring4.X之后开始支持泛型依赖注入. 使用示例: 1.定义实体 package com.dx.spring.bean.componentscan; import java.io.Ser ...
- Spring的泛型依赖注入
Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用,(这样子类和子类对应的泛型类自动建立关系)具体说明: 泛型注入:就是Bean1和Bean2注入了泛型,并且Bean1和Bean ...
- 转载--浅谈spring4泛型依赖注入
转载自某SDN-4O4NotFound Spring 4.0版本中更新了很多新功能,其中比较重要的一个就是对带泛型的Bean进行依赖注入的支持.Spring4的这个改动使得代码可以利用泛型进行进一步的 ...
- Spring初学之泛型依赖注入
主要讲泛型依赖注入,所以核心在java文件,配置文件中只需配置扫描包即可,如下: <?xml version="1.0" encoding="UTF-8" ...
- Autofac 泛型依赖注入
using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...
- Spring4学习回顾之路10-Spring4.x新特性:泛型依赖注入
泛型依赖注入:Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用. 话语太过抽象,直接看代码案例,依次建立如下代码: User.java package com.lql.sprin ...
- 【串线篇】spring泛型依赖注入原理
spring泛型依赖注入原理 不管三七二十一 servlet :加注解@servlet service:加注解@service dao:加注解@Repository 这相当于在容器中注册这些个类
- Spring新特性_泛型依赖注入
泛型依赖注入 package com.tanlei.spring.generic; import org.springframework.beans.factory.annotation.Autowi ...
随机推荐
- 扭曲效果 效率优化 GrapPass,CommandBuffer对比
屏幕图像捕捉: Shader的GrabPass GrabPass可以很方便地捕获当前渲染时刻的FrameBuffer中的图像. 其原理就是从当前FrameBuffer中copy一份纹理,通过SetTe ...
- bzoj 1089: [SCOI2003]严格n元树【dp+高精】
设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i-1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i-1]种 写个高精就行了,好久没写WA了好几次-- #incl ...
- P5107 能量采集
传送门 官方题解 话说最后的答案忘记取模了结果连暴力都挂了可海星-- //minamoto #include<bits/stdc++.h> #define R register #defi ...
- (博弈论 高精度小数)51NOD 1185 威佐夫游戏 V2
有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...
- 使用了eclipse10年之后,我终于投向了IDEA
使用了eclipse10年之后,我终于投向了IDEA 最近,改用了idea,同事都说我投敌了.当然,这些同事都是和我一样的"老"程序员.不说毕业生,公司里的90后基本电脑都不会安装 ...
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...
- python爬虫抓取哈尔滨天气信息(静态爬虫)
python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip i ...
- Android推送服务(1)几种实现方式
1.几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果 ...
- GOTO语句以及GOTO机制的模式实现
goto语句提供了方法内部的任意跳转,它在特殊场景下被应用. 而假设一个对象执行一个方法后,我们期望其余任何对象都可以捕获它,然后自己执行某些操作,那么可以怎么实现呢 class 皇宫 { void ...
- Join方法,yield方法,线程的优先级