代码编织梦想

首先讲解一下原始的注入方式

public abstract class BaseDao<T> {
    public abstract void save();
}

@Repository
public class BookDao extends BaseDao<Book>{
    @Override
    public void save() {
        System.out.println("保存图书信息 BookDao被调用");
    }
}

@Repository
public class StudentDao extends BaseDao<Student>{

    @Override
    public void save() {
        System.out.println("保存用户信息 StudentDao被调用");
    }
}

@Service
public class BookService {
    @Autowired
    private BookDao bookdao;
    public void saveBook(){
        bookdao.save();
    }
}

@Service
public class StudentService {
    @Autowired
    private StudentDao studentDao;
    public void saveStudent(){
        studentDao.save();
    }
}

@ContextConfiguration(locations = "classpath:application02.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJunit4Test {
    @Autowired
    private BookService bookService;
    @Autowired
    private StudentService studentService;
    @Test
    public void save(){
        bookService.saveBook();
        studentService.saveStudent();
    }
}
通过测试发现要调用那个具体的持久层Dao都需要,注入具体的Dao 而下来的操作就是通过泛型动态决定要注入那个Dao进行操作。
注意:下面没出现的Dao层代码和上面的代码保持一致。
@Service
public class BookService extends BaseService<Book>{

}

@Service
public class StudentService extends BaseService<Student>{

}

public class BaseService<T> {
    @Autowired
    private BaseDao<T> baseDao;
    public void save(){
        baseDao.save();
    }
}
通过泛型决定注入具体调用的那个Dao
@ContextConfiguration(locations = "classpath:application02.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringJunit4Test {
    @Autowired
    private BaseService<Student> baseService;
    @Test
    public void save(){
        baseService.save();
        System.out.println(baseService.getClass().getSuperclass());
        //得到带泛型的类的类型名称
        System.out.println(baseService.getClass().getGenericSuperclass());
    }
}

由此可见,当我们传入一个具体的泛型Student后,调用底层的save()就会在BaseService中自动注入StudentDao 进而调用StudentDao的save()方法

Spring在做依赖注入的时候,泛型也是一个考虑的因素。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhonghuan5281852/article/details/127991451

spring的bean注解配置和泛型依赖注入_武当打字员的博客-爱代码爱编程_spring bean 泛型

Spring:一个拥有控制反转(IOC)和面向切面(AOP)的容器框架,它使用俩种方式将Bean类及控制类装载入IOC容器里,              XML文件方式和注解方式,如下介绍的是注解方式。 一、注解方式获取类(总结:当类之间有关联关系时一般使用@Autowired自动装载)  第一步:给类添加注解:注解有四种,@注解类型("自定义注解名

spring——泛型依赖注入(@autowired注解原理)-爱代码爱编程

关于泛型的依赖注入 在之前的书城案例中,service层中的UserService和BookService分别在各自的类中定义UserDao和BookDao并调用各自的save()方法进行数据的保存;使用注解关键字@Au

SpringIOC_05 测试泛型依赖注入+IOC总结-爱代码爱编程

本人是个新手,写下博客用于自我复习、自我总结。 如有错误之处,请各位大佬指出。 学习资料来源于:尚硅谷 Book.java: public class Book { } User.java: public class User { } BaseDao.java: /** * 定义了基本的增删改查方法 * * */ public

关于Spring的泛型依赖注入-爱代码爱编程

这是学习Spring时,关于泛型依赖注入的一个记录,方便加深自己理解,也希望可以帮到大家 如上图所示,当容器开始启动时,其具体的泛型会成为一种参考标准来进行寻找符合标准的类来注入容器中; 详细代码如下: BaseDao public abstract class BaseDao<T> { public abstract void

Spring中的泛型依赖注入简单实现-爱代码爱编程

Spring中的泛型依赖注入简单实现 Spring中的泛型依赖注入是Spring4.0新添加的功能,下面通过几个实例来演示这个功能。 首先创建Book和User类,无内容,创建过程省略。 然后创建BaseDao接口 public interface BaseDao<T> { public abstract void sa

7. Spring之泛型依赖注入-爱代码爱编程

文章目录 Spring之泛型依赖注入1. 引入依赖2. 添加配置文件3. 实体类4. `Dao`层5. `Service`层6. 测试`☆` Spring之泛型依赖注入 Spring 4.x中可以为子类注入子类对应的泛型类型的成员变量的引用。 1. 引入依赖 <dependencies> &

Spring框架之Day05泛型依赖注入效果与原理-爱代码爱编程

泛型依赖注入 效果 public abstract class BaseDao<T> { public abstract void save(); } public class BaseService<T> { @Autowired BaseDao<T> baseDao; publi

Spring 向IOC容器中注入泛型-爱代码爱编程

向容器中注入泛型 泛型依赖注入是spring4.0之后新添的一个功能,那么什么是泛型注入呢?现在不妨我们想象一个很常见的场景就是图书管理系统中的 dao层,service层。 在dao层分别有userdao和bookdao他们都需要链接数据库,而在service层中也同样有两个service 分别是Userservice和Bookservice,很明显在

泛型依赖注入_编程小白的笔记分享和感悟的博客-爱代码爱编程

案例 public class Book { } public class User { } public abstract class BaseDao<T> { public abstract void save(); } @Component public class BookDao extends Base

为什么我的视频播放量上不去?_大 周 网 络的博客-爱代码爱编程

正在做自媒体视频的你有没有这个疑问:自己视频的播放量为什么一直上不去? 其实除了内容本身的质量外,还有很多外在因素,这些因素也很容易被新手们忽略,导致播放量一直上不去,收益自然也不会很高。 今天这期内容就来跟粉丝们分享一

[spring学习]9、泛型依赖注入-爱代码爱编程

基本介绍         为了更好的管理有继承关系或者相互依赖的bean的自动装配,spring提供了基于泛型依赖的注入机制。当我们的继承关系非常复杂的时候,泛型依赖注入会体现出很大的优越性。 说明         下面就是泛型依赖注入的大致关系图 所有的Dao类都继承BaseDao,而Service则是继承BaseService,通过指定

spring泛型依赖注入_spring xml注入泛型-爱代码爱编程

IDEA创建spring项目 之后设置个项目名就一直到完成。 代码配置 结构图 配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> <pr

行业分析| 智慧消防对讲_可视对讲行业分析-爱代码爱编程

消防工程关系国计民生,关系到每个公民的人身和财产安全,在每个场所的建设中,消防工程建设是必不可少的一个板块,包括消防应急通道建设和应急设备建设两个方面。其中消防系统设备建设主要分为九大系统的建设:消防水系统、火灾自动报警系统