SpringBoot复习:(24)DeferredImportSelector

news/2024/12/2 19:53:12/

功能: 定一一个字符串数组,每个元素都是一个类的全限定名(包名+类名),把这些类的实例注册到Spring 容器。
一、定义要注册的类:

package cn.edu.tju.service;import java.util.Arrays;
import java.util.List;public class MusicService {public List<String> getComposerList(){return Arrays.asList("Mozart", "Chopin");}
}

二、定义类实现DeferredImportSelector

package cn.edu.tju.config;import org.springframework.context.annotation.DeferredImportSelector;
import org.springframework.core.type.AnnotationMetadata;import java.util.ArrayList;
import java.util.List;public class MyDeferredImportSelector implements DeferredImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {//return new String[]{"cn.edu.tju.service.MusicService"};return new String[0];}@Overridepublic Class<? extends Group> getImportGroup() {return MyGroup.class;}private static class MyGroup implements DeferredImportSelector.Group{AnnotationMetadata metadata;@Overridepublic void process(AnnotationMetadata metadata, DeferredImportSelector selector) {this.metadata = metadata;}@Overridepublic Iterable<Entry> selectImports() {List<Entry> list = new ArrayList<>();list.add(new Entry(this.metadata, "cn.edu.tju.service.MusicService"));return list;}}
}

三、在配置类中配置自定义的DeferredImportSelector

package cn.edu.tju.config;import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;import java.io.IOException;
import java.io.Reader;import static org.apache.ibatis.io.Resources.getResourceAsReader;@Configuration
@Import({MyDeferredImportSelector.class})public class MyConfig {}

四、从容器中获取通过DeferredImportSelector注册的bean

package cn.edu.tju;import cn.edu.tju.mapper.StudentMapper;
import cn.edu.tju.service.DemoService;
import cn.edu.tju.service.MusicService;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;@SpringBootApplication
public class Start {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(Start.class, args);MusicService musicService = context.getBean(MusicService.class);System.out.println(musicService.getComposerList());}
}

http://www.ppmy.cn/news/1019080.html

相关文章

HCIA 路由器工作原理 及其 静态路由配置

目录 1、路由器工作原理 2、获取未知网段的方法&#xff1a; 3、静态路由 1&#xff09;写法&#xff1a; 2&#xff09;扩展配置 a、环回接口 配置命令&#xff1a; 环回接口的作用&#xff1a; b、手工汇总 手工汇总作用&#xff1a; c、路由黑洞 d、缺省路由 配置…

go的strings用法

strings 是 Go 语言标准库中提供的一个包&#xff0c;用于处理字符串相关的操作。这个包包含了许多函数&#xff0c;可以用于字符串的切割、拼接、替换、查找等操作。下面是一些常用的 strings 包函数和用法示例&#xff1a; package mainimport ("fmt""string…

消息队列比较

、ActiveMQ 优点&#xff1a;单机吞吐量万级&#xff0c;时效性ms级&#xff0c;可用性高&#xff0c;基于主从架构实现高可用性&#xff0c;消息可靠性较低的概率丢失数据。 缺点&#xff1a;官方社区现在对ActiveMQ5.X维护越来越少了&#xff0c;高吞吐量场景较少使用。 2、K…

B树的插入与删除过程

B树的插入 原树&#xff1a; 插入key后&#xff0c;若导致原节点关键字数超过上限&#xff0c;则从中间位置&#xff08; ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m​⌉&#xff09;将关键字分成两部分&#xff0c;左部分包含的关键字放在原节点中&#xff0c;右部分包含的关键…

时间复杂度空间复杂度相关练习题

1.消失的数字 【题目】&#xff1a;题目链接 思路1&#xff1a;排序——》qsort快排——》时间复杂度O&#xff08;n*log2n&#xff09; 不符合要求 思路2&#xff1a;&#xff08;0123...n)-(a[0]a[1][2]...a[n-2]) ——》 时间复杂度O&#xff08;N&#xff09;空间复杂度…

【HDFS】ListenableFuture在HDFS中的应用

AsyncLogger、QuorumCall IPCLoggerChannel(它是AsyncLogger的子类) 一、ListenableFuture的基本使用 ListenableFuture 是 Guava 库中提供的一个接口,它扩展了 JDK 中的 Future 接口,并添加了异步任务完成后的回调机制。 ListenableFuture 提供了以下功能: 异步任务的…

解决监督学习,深度学习报错:AttributeError: ‘xxx‘ object has no attribute ‘module‘!!!!

哈喽小伙伴们大家好呀&#xff0c;很长时间没有更新啦&#xff0c;最近在研究一个问题&#xff0c;就是AttributeError: xxx object has no attribute module 今天终于是解决了&#xff0c;所以来记录分享一下&#xff1a; 我这里出现的问题是&#xff1a; 因为我的数据比较大…

[保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现

描述 对于一个不存在括号的表达式进行计算 输入描述&#xff1a; 存在多组数据&#xff0c;每组数据一行&#xff0c;表达式不存在空格 输出描述&#xff1a; 输出结果 示例1 输入&#xff1a; 6/233*4输出&#xff1a; 18思路&#xff1a; ①设立运算符和运算数两个…