Spring注册Bean系列--方法4:@Import+ImportSelector接口

news2024/11/20 9:17:40

原文网址:Spring注册Bean系列--方法4:@Import+ImportSelector接口_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍Spring注册Bean的方法:@Import+ImportSelector接口。

         注册Bean的方法我写了一个系列,见:Spring注册Bean(提供Bean)系列--方法大全_IT利刃出鞘的博客-CSDN博客

方法概述

  1. ​​​​​​​实现ImportSelector接口
    1. 实现它的selectImports方法(返回需要导入的组件的全类名数组;)
  2. 在启动类上添加:@Import(ImportSelector接口的实现类)
    1. 也可以放在在其他@Configuration标记的类上

实例

ImportSelector接口的实现类

package com.knife.selector;

import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.Set;

//自定义逻辑返回需要导入的组件
public class MyImportSelector implements ImportSelector {

    //返回值,就是到导入到容器中的组件全类名
    //AnnotationMetadata:当前标注@Import注解的类的所有注解信息
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        //当前类的所有注解
        Set<String> annotationTypes = importingClassMetadata.getAnnotationTypes();
        System.out.println("当前配置类的注解信息:" + annotationTypes);

        //可以写多个,用逗号隔开
        //不能返回null,不然会报NullPointException
        return new String[]{"com.knife.entity.MyBean"};
    }
}

要注册的类(Bean)

package com.knife.entity;

public class MyBean {
    public String sayHello() {
        return "Hello World";
    }
}

导入注册类

法1:启动类

package com.knife;

import com.knife.selector.MyImportSelector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;

@SpringBootApplication
@Import({MyImportSelector.class})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

法2:@Configuration 标记的类

其实,只要是注册到Spring容器中的类就可以,但一般用@Configuration。

package com.knife.config;

import com.knife.selector.MyImportSelector;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({MyImportSelector.class})
public class MyBeanImportConfiguration {

}

测试

package com.knife.controller;

import com.knife.entity.MyBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @Autowired
    private MyBean myBean;

    @GetMapping("/test")
    public String test() {
        return myBean.sayHello();
    }
}

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php宝塔搭建部署实战SDCMS蓝色系列包装行业网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的SDCMS蓝色系列包装行业网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

房产管理系统平台架构求分析

数图互通房屋管理系统遵循高校房产“分级授权、分类管理、网络化、图形化、精细化、流程化”的管理理念&#xff0c;在资产管理部门统一管理全校房产的前提下&#xff0c;注重二级单位在房产管理中的参与&#xff0c;注重针对不同类型类别房产的分类管理提高学校房产的使用效率…

加强舆情监控有哪些方法,互联网舆情监控平台有哪些?

加强舆情监控是指企业通过提升监控能力&#xff0c;更好地了解公众对其产品、服务、品牌形象等的看法&#xff0c;并及时采取应对措施。接下来TOOM舆情监测小编带您简单了解加强舆情监控有哪些方法&#xff0c;互联网舆情监控平台有哪些&#xff1f; 企业可以通过以下方式加强舆…

C# 并行编程

一 并行任务库TPL 1 并行任务库&#xff08;TPL&#xff0c;Task Parallel Library&#xff09; 2 最重要的是Task类&#xff0c;还有Parallel类 3 Task类&#xff0c;是利用线程池来进行任务的执行 比如直接用ThreadPool更优化&#xff0c;而且编程更方便 4 Paallel类&…

右值引用与移动语义

目录 一、左、右值引用 1.1 什么是左值 1.2 什么是右值 1.3 右值引用特性 1.4 move语义 二、左、右值引用的比较 三、右值引用的使用场景 3.1 左值引用的短板 3.2 解决方案 四、移动构造与移动赋值 注意情况 五、万能引用与完美转发 5.1 万能引用 5.2 完美转发 …

【SpringMVC】SpringMVC中异常处理

1.异常处理的思路 系统中异常包括两类&#xff1a;预期异常和运行时异常 RuntimeException&#xff0c;前者通过捕获异常从而获取异常信息&#xff0c;后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的 dao、service、controller 都通过 throws Excepti…

以前的互联网技术几乎是解决一切痛点和难题的万能解药

事实上&#xff0c;以往&#xff0c;我们所经历的那个互联网玩家频出的年代&#xff0c;其实就是一个以互联网技术为主导的年代。在那样一个年代里&#xff0c;互联网技术几乎是解决一切痛点和难题的万能解药&#xff0c;几乎是破解一切行业痛点和难题的杀手锏。任何一个行业&a…

怎么恢复删除的照片?分享5种恢复 iPhone /iPad 照片的方法

从 iPhone 中删除照片可能会带来压力。以下是如何使用几种不同的方法从 iPhone 恢复最近删除的照片。运气好的话&#xff0c;如果照片没有被新数据覆盖&#xff0c;您可以取回照片。 方法 1. 使用iPhone照片恢复工具 以下是如何使用图像恢复软件从 iPhone 中恢复已删除的图片&a…

字节跳动模型大规模部署实战

动手点关注干货不迷路1. 背景介绍在字节跳动&#xff0c;基于深度学习的应用遍地开花&#xff0c;工程师关注模型效果的同时也需要关注线上服务一致性和性能&#xff0c;早期这通常需要算法专家和工程专家分工合作并紧密配合来完成&#xff0c;这种模式存在比较高的 diff 排查验…

电磁兼容教程

------------------------20221228--------------------------------- 定义&#xff1a; 电磁环境&#xff0c;设备正常工作&#xff0c;不干扰其他设备。共存 电磁兼容研究 有限时间、空间、频谱设备共存的科学 要素&#xff1a; 电磁环境是由空间、时间、频谱三要素组成。…

怎么把word转化为PDF?赶快试试这个方法!

怎么把word转化为PDF&#xff1f;我们都经常会编辑文件、记录数据&#xff0c;所以也经常会需要转换文件的格式&#xff0c;word文件转换为PDF文件是最热的转换操作之一&#xff0c;所以有很多人都在问小编到底该怎样进行转换&#xff0c;不知道怎样转换出来的文件质量高&#…

18-剑指 Offer 20. 表示数值的字符串

题目 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;后面跟着一个 整数若干…

Debian系列-开机启动程序

Debian系列-开机启动程序 文章目录Debian系列-开机启动程序摘要1 修改/etc/profile2 输入密码&#xff0c;以管理员权限运行程序关键字&#xff1a; 开机启动、 Debian、 Linux、 profile、 etc内容背景&#xff1a; 最近项目终于切到Linux下开发了&#xff0c;所以最近的记录…

sklearn.neighbors 最近邻相关算法,最近邻分类和回归

文章目录sklearn.neighbors 最近邻相关算法&#xff0c;分类和插值1. 查找最近邻元素2. 最近邻分类3. 最近邻回归4. NearestCentroid 最近邻质心分类5. Neighborhood Components Analysis 邻域成分分析sklearn.neighbors 最近邻相关算法&#xff0c;分类和插值 主要介绍 sklea…

day31【代码随想录】回溯之子集||、递增子序列、全排列、全排列||

文章目录前言一、子集 II&#xff08;力扣90&#xff09;二、递增子序列&#xff08;力扣491&#xff09;三、全排列&#xff08;力扣46&#xff09;四、全排列||&#xff08;力扣47&#xff09;总结前言 1、子集|| 2、递增子序列 3、全排列 4、全排列|| 一、子集 II&#xff…

【C++】指针的基础知识 | 学习笔记

文章目录前言一、指针的定义和使用1.1、指针定义1.2、指针使用二、指针占用的内存空间三、空指针和野指针3.1.空指针3.2 野指针四、const修饰指针4.1 常量指针4.2 指针常量4.3 const既修饰指针也修饰常量五、指针&#xff0c;数组&#xff0c;函数混用案例5.1 指针和数组混用5.…

Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解

本期为TechBeat人工智能社区第466期线上Talk&#xff01; 北京时间12月28日(周三)20:00&#xff0c;上海交通大学计算机系博士生——李杰锋&方浩树的Talk将准时在TechBeat人工智能社区开播&#xff01; 他们与大家分享的主题是: “多人场景&#xff0c;全身136关键点检测与…

初识Unity

视频教程&#xff1a;史上最全Unity3D教程 常用快捷键 1.按住鼠标滚轮&#xff0c;拖动场景 2.滑动鼠标滚轮&#xff0c;缩放场景 3.右键&#xff0c;旋转视角 4.右键W、A、S、D&#xff0c;漫游视角&#xff0c;同时按下Shift可加速移动 5.alt鼠标左键&#xff0c;环视…

【财务】FMS财务管理系统---费用管理

在FMS财务管理系统中&#xff0c;和公司主营业务收入相关的费用有哪些&#xff1f;本篇文章中&#xff0c;笔者对具体分类和流程进行了系统的分析和总结&#xff0c;与大家分享。 财务中的费用管理主要包括销售费用、财务费用、管理费用等几大部分&#xff0c;看到费用大家首先…

C#,图像二值化(06)——全局阈值的大津OTSU算法及其源代码

1、大津OTSU算法 最大类间方差法是1979年由日本学者大津(Nobuyuki Otsu)提出的&#xff0c;是一种自适应阈值确定的方法&#xff0c;又叫大津法&#xff0c;简称OTSU&#xff0c;是一种基于全局的二值化算法&#xff0c;它是根据图像的灰度特性,将图像分为前景和背景两个部分。…