Spring的泛型依赖注入

Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用,(这样子类和子类对应的泛型类自动建立关系)
具体说明:
泛型注入:就是Bean1和Bean2注入了泛型,并且Bean1和Bean2建立依赖关系,这样子类Bean3(继承bean1)和bean4(继承bean2)就会自动建立关系
不是泛型注入:就是说Bean1和Bean2都没有注入泛型,只是建立了关系,子类Bean3(继承bean1)和bean4(继承bean2)也会自动建立关系

泛型依赖注入的实现步骤:
  1新建两个泛型类,并建立依赖关系:
  具体代码:
  BaseRepository:

package com.jeremy.spring.genericityDI;
public class BaseRepository{
}

  BaseService:

package com.jeremy.spring.genericityDI;

import org.springframework.beans.factory.annotation.Autowired;

public class BaseService<T> {

    @Autowired------//这里告诉IOC容器自动装配有依赖关系的Bean
    protected BaseRepository baseRepository;--------//这里是子类继承依赖关系
    public void add(){
        System.out.println("add..............");
        System.out.println(baseRepository);
    }
}

  2新建一个泛型类:

  User:

package com.jeremy.spring.genericityDI;

public class User {

}

  3新建BaseRepository和BaseService的子类
  UserRepository:

package com.jeremy.spring.genericityDI;
import org.springframework.stereotype.Component;

@Component
public class UserRepository extends BaseRepository{

}

  UserService:

package com.jeremy.spring.genericityDI;

import org.springframework.stereotype.Service;

@Service
public class UserService extends BaseService{

}

  4:在Spring的配置文件中配置自动装配带有注解的Bean:
  

<?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-4.0.xsd">
<context:component-scan base-package="com.jeremy.spring.genericityDI"></context:component-scan>

</beans>

5测试代码和结果
  测试代码:

@Test
    public void test() {
        ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml");
        UserService userService=(UserService) actx.getBean("userService");
        userService.add();
    }

测试结果:

add..............
[email protected]

从结果看,虽然子类没有建立依赖关系,但userRepository实例还是被实例化了,就证明了父类的依赖关系,子类是可以继承的

其实这里也可以说明,就算父类不是被IOC容器管理,但是建立关系时添加了@Autowired注解,父类的关系会被继承下来

题外话:
那泛型注入和不是泛型注入有什么优缺点???二者真正的作用是什么呢??
至于两种不同的方式注入到底有什么优缺点,以后自己在开发中慢慢领悟吧,现在就是把基础弄好

时间: 2024-12-28 23:39:24

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

Spring之泛型依赖注入

Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用 项目结构: BaseRepository.java public class BaseRepository<T> { } BaseService.java public class BaseService<T>{ @Autowired protected BaseRepository<T> repository; public void add(){ System.out.println(&quo

Spring初学之泛型依赖注入

主要讲泛型依赖注入,所以核心在java文件,配置文件中只需配置扫描包即可,如下: <?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

Spring -- 4.0新特性 -- 泛型依赖注入

泛型依赖注入为spring4.0版本新增加的特性. 目录结构 BaseService.java类 public class BaseService<T> { @Autowired private BaseRespository baseRespository; public void save() { System.out.println("Base Class save method"); System.out.println(baseRespository); } }

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

spring泛型依赖注入原理 不管三七二十一 servlet :加注解@servlet service:加注解@service dao:加注解@Repository 这相当于在容器中注册这些个类 原文地址:https://www.cnblogs.com/yanl55555/p/11744077.html

spring四种依赖注入方式

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种

spring 四种依赖注入方式以及注解注入方式

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化, 而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员, 而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种依赖注

spring学习笔记-依赖注入

学习过程访问的地址,按顺序理解: [email protected]注解与自动装配 spring四种依赖注入方式 Spring注解注入 <context:component-scan>使用说明 详细:Spring零配置通过注解实现Bean依赖注入总结

JavaEE开发之Spring中的依赖注入与AOP编程

一.快速创建Mava管理的Spring工程 因为本篇博客是讨论关于Spring的东西,所以我们就不创建WebApp的工程了.我们使用Spring来快速的创建一个Maven管理的工程.如下所示找到File->New->Maven Project选项来创建一个新的Maven Project,具体如下所示: 下方我们选择创建一个简单的Maven工程,跳过模板的选择.上篇博客我们在创建Maven工程时,是没有选择下方这个选项的,然后我们选择了一个WebApp的模板.而本篇博客,我们不需要WebApp的

spring四种依赖注入方式 (set,构造器,工厂,注解 )

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. spring有多种