iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot使用@Autowired为多实现的接口注入依赖
  • 504
分享到

SpringBoot使用@Autowired为多实现的接口注入依赖

2024-04-02 19:04:59 504人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录使用@Autowired为多实现的接口注入依赖问题描述方法一:使用@Qualifier限定方法二:利用@Autowired可以byName匹配Bean的特性方法三:使用@Prim

使用@Autowired为多实现的接口注入依赖

问题描述

现在有UserRepositoryImpl,需要为其注入依赖。


@Repository
public class UserRepositoryImpl implements UserRepository {
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

在本项目中的ioc容器中,JdbcTemplate有两个实现。


    @Bean(name="primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate (
            @Qualifier("primaryDataSource")  DataSource dataSource ) {
        return new JdbcTemplate(dataSource);
    }
    @Bean(name="secondaryJdbcTemplate")
    public JdbcTemplate  secondaryJdbcTemplate(
            @Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

方法一:使用@Qualifier限定

在类UserRepositoryImpl中进行修改,通过@Qualifier指定注入依赖的实现。


@Repository
public class UserRepositoryImpl implements UserRepository {
    @Autowired
    @Qualifier("primaryJdbcTemplate")
    private JdbcTemplate jdbcTemplate;
}

方法二:利用@Autowired可以byName匹配Bean的特性

将UserRepositoryImpl中将待注入的成员变量的名称修改为ioC容器中Bean的id。在注入依赖时,IOC容器将会按byName的方式为其匹配Bean并且注入依赖。


@Repository
public class UserRepositoryImpl implements UserRepository {
    @Autowired
    private JdbcTemplate primaryJdbcTemplate;
}

方法三:使用@Primay

为Bean增加@Primary的注解,在@Autowired遇到多实现的接口时,IOC容器会将被@Primary标注的Bean注入。


    @Primary
    @Bean(name="primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate (
            @Qualifier("primaryDataSource")  DataSource dataSource ) {
        return new JdbcTemplate(dataSource);
    }
    @Bean(name="secondaryJdbcTemplate")
    public JdbcTemplate  secondaryJdbcTemplate(
            @Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

一个接口多个实现类的Spring注入

1. 首先, Interface1 接口有两个实现类

Interface1Impl1 和 Interface1Impl2

Interface1 接口:


package com.example.service;

public interface Interface1 {
    void fun1();
}

以下是接口的两个实现类,请注意@service注解的使用方式,这里给每个实现类标注了不同的名称,方便在@Resource注入时区别注入

Interface1 接口实现类1:


@Service("s1")
 public class Interface1Impl1 implements Interface1 {
 @Override 
public void fun1() {
 System.out.println("接口1实现类 ...");
 } 
  public void fun2(){
  System.out.println("接口1实现类1 fun2 ...");
 } 
}

Interface1 接口实现类2:


@Service("s2") 
public class Interface1Impl2 implements Interface1 { 
@Override 
public void fun1() { 
System.out.println("接口1实现类 ...");
 } 
public void fun2(){
 System.out.println("接口1实现类2 fun2 ..."); 
} 
} 

2. 通过 @Autowired 和 @Qualifier 配合注入


@Autowired
@Qualifier("interface1Impl1")
Interface1 interface1;    //正常启动

3. 使用@Resource注入,根据默认类名区分


@Resource(name = "interface1Impl1")
Interface1 interface1;    //正常启动

4. 使用@Resource注入,根据@Service指定的名称区分


@Resource(name = "s1")
Interface1 interface1;    //正常启动

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot使用@Autowired为多实现的接口注入依赖

本文链接: https://www.lsjlt.com/news/157650.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot使用@Autowired为多实现的接口注入依赖
    目录使用@Autowired为多实现的接口注入依赖问题描述方法一:使用@Qualifier限定方法二:利用@Autowired可以byName匹配Bean的特性方法三:使用@Prim...
    99+
    2024-04-02
  • SpringBoot中如何实现注入依赖
    SpringBoot中如何实现注入依赖?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。今天给大家介绍一下SpringBoot中是如何实现依赖注入的功能。在以往spring使用...
    99+
    2023-05-31
    springboot bo 依赖注入
  • 使用Spring AOP时出现@Autowired依赖无法注入如何解决
    这篇文章给大家介绍使用Spring AOP时出现@Autowired依赖无法注入如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。发现问题:之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,s...
    99+
    2023-05-31
    springaop @autowired
  • WebAPI中使用Autofac实现依赖注入
    一、创建实体类库 创建单独实体类 创建DI.Entity类库,用来存放所有的实体类,新建用户实体类,其结构如下: using System; using System.Collect...
    99+
    2024-04-02
  • SpringBoot的HandlerInterceptor中依赖注入为null问题
    目录SpringBoot HandlerInterceptor依赖注入为null原因解决方案spring依赖注入对象为null被注解的对象如下在调用SparkSource时候使用了注...
    99+
    2024-04-02
  • Asp.net core中依赖注入的实现
    使用服务 在Asp.net core的Controller中,可以通过如下两种方式获取系统注入的服务: 构造函数 可以直接在构造函数中传入所依赖的服务,这是非常常见的DI注入方式。 ...
    99+
    2024-04-02
  • Laravel的依赖注入怎么实现
    这篇文章主要介绍了Laravel的依赖注入怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Laravel的依赖注入怎么实现文章都会有所收获,下面我们一起来看看吧。在Laravel中,依赖注入的实现原理是利...
    99+
    2023-06-29
  • ASP.net core使用Autofac实现泛型依赖注入
    目录什么是泛型依赖注入.net core里实现泛型依赖注入安装AutofacIMyRepository定义仓储接口MyRepositoryBase仓储实现在Program声明实现依赖...
    99+
    2024-04-02
  • 使用PHP怎么实现依赖注入模式
    使用PHP怎么实现依赖注入模式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。用法DatabaseConfiguration 被注入 DatabaseConnection 并...
    99+
    2023-06-15
  • php中如何使用laravel实现依赖注入
    这篇文章主要介绍“php中如何使用laravel实现依赖注入”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中如何使用laravel实现依赖注入”文章能帮助大家解决问题。laravel容器包含控...
    99+
    2023-07-04
  • AndroidHilt依赖注入的实现浅析
    目录什么是依赖注入使用依赖注入的好处Hilt 中常用的预定义限定符@HiltAndroidApp@AndroidEntryPoint@Module@InstallIn@Provide...
    99+
    2023-01-28
    Android Hilt依赖注入 Android Hilt Android依赖注入
  • Go 中的对象容器接口:如何轻松地实现依赖注入?
    随着现代软件开发中的应用程序规模越来越大,软件架构设计已经成为了一个非常重要的话题。在这个话题中,依赖注入是一个非常重要的设计模式。依赖注入是一种设计模式,它允许程序员把一个对象的依赖关系从代码中分离出来,从而可以更加灵活地管理这些依赖关...
    99+
    2023-07-03
    对象 容器 接口
  • Web API中如何使用Autofac实现依赖注入
    这篇文章主要介绍了Web API中如何使用Autofac实现依赖注入的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Web API中如何使用Autofac实现依赖注入文章都会有所收获,下面我们...
    99+
    2023-06-29
  • AndroidHilt依赖注入的使用讲解
    目录什么是依赖注入使用依赖注入的好处Hilt中常用的预定义限定符@HiltAndroidApp@AndroidEntryPoint@Module@InstallIn@Provides...
    99+
    2023-01-16
    Android Hilt依赖注入 Android Hilt Android依赖注入
  • VSCode中的依赖注入怎么实现
    这篇文章主要讲解了“VSCode中的依赖注入怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VSCode中的依赖注入怎么实现”吧!依赖注入介绍如果有这样一个模块 A,它的实现依赖另一个...
    99+
    2023-07-04
  • ASP.NET Core依赖注入框架的使用
    目录一、IoC框架二、IoC-Autofac 三、.NET Core中自带DI的使用四、Autofac 使用五、批量注入 前言: 还记得上篇文章中ASP.NET Core 依赖注入详...
    99+
    2024-04-02
  • ASP.net core怎么使用Autofac实现泛型依赖注入
    本文小编为大家详细介绍“ASP.net core怎么使用Autofac实现泛型依赖注入”,内容详细,步骤清晰,细节处理妥当,希望这篇“ASP.net core怎么使用Autofac实现泛型依赖注入”文章能帮助大家解决疑惑...
    99+
    2023-06-30
  • C# 利用Autofac批量接口注入依赖的问题小结
    背景:   本人在一位大佬的Colder框架中看到了这个接口注入,然后呢就想学习一下ioc思想与di设计模式。此写法给我的感觉就是 非常的 优雅 ,优雅永不过时。关于接口注入具体是什...
    99+
    2024-04-02
  • Spring框架实现依赖注入的原理
    目录什么是依赖注入实现原理IOC容器Bean定义依赖注入构造函数注入Setter方法注入字段注入生命周期回调注解总结Spring 框架作为 Java 开发中最流行的框架之一,其核心特...
    99+
    2023-05-15
    Spring依赖注入 Spring依赖注入的方式 Spring依赖注入原理
  • Angular中的依赖注入如何使用
    这篇文章主要介绍了Angular中的依赖注入如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Angular中的依赖注入如何使用文章都会有所收获,下面我们一起来看看吧。译者添加:维基百科中指出 -- 在软件...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作