SpringBoot启动加载自己的策略类到容器中使用?

news/2024/4/30 17:17:52

使用InitializingBean接口

springboot中在启动的会自动把所有的实现同一个接口的类,都会转配到标注@Autowired的list里面
而且实现了InitializingBean接口,在启动的赋值的时候,我们会把所有的策略类,重放到map中,我们在使用的时候,更具唯一code,找到对应的实现类即可。

public class xxxxx implements InitializingBean {@Autowiredprivate List<策略类的接口> xxxxLists;private Map<每一个策略的唯一code,策略类的接口> xxxxMap;@Overridepublic void afterPropertiesSet() throws Exception {xxxxMap = xxxxLists.stream().collect(Collectors.toMap(策略类唯一code,Function.identity()));}
}

实现ApplicationContextAware类

通过后置处理器,把容器相同的类找到,然后加载到map中使用

public class xxxxxx implements ApplicationContextAware {private Map<每一个策略的唯一code,策略类的接口> xxxxMap;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {Map<String, CityInfoServiceController> beansOfType = applicationContext.getBeansOfType(xxxxxx.class);beansOfType.forEach((key,value)->{xxxxMap.put(value.getCode(),value);});}
}

每一个策略接口

public interface MyHandle {//每一个策略都有一个唯一一个code(建议使用枚举列出,方便使用)public String getHandleCode();//实现具体策略实现(可以返回具体数据,也可以返回void)public void handleMethod(Object data);}

http://www.mrgr.cn/p/42135875

相关文章

机器人码垛机的技术特点与应用

随着科技的飞速发展&#xff0c;机器人技术正逐渐渗透到各个行业领域&#xff0c;其中&#xff0c;机器人码垛机在物流行业的应用尤为引人瞩目。它不仅提高了物流效率&#xff0c;降低了成本&#xff0c;更在改变传统物流模式的同时&#xff0c;为行业发展带来了重大的变革。 一…

Java并发(二十五)----异步模式之生产者/消费者

1. 定义 要点与Java并发(二十二)----同步模式之保护性暂停中的保护性暂停中的 GuardObject 不同,不需要产生结果和消费结果的线程一一对应这样的好处是消费队列可以用来平衡生产和消费的线程资源生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据消息…

Chrome免安装绿色版制作教程

chrome离线安装包 https://downzen.com/en/windows/google-chrome/versions/?page=1 方法一: 1) 下载最新版Google Chrome离线安装包文件1. Stable版(稳定版、正式版)下载:http://www.google.com/chrome/eula.html?standalone=1注:Stable 似乎只有最新稳定版可以从官方下…

UML学习

UML(Unified Modeling Language)&#xff1a;统一建模语言&#xff0c;提供了一套符号和规则来帮助分析师和设计师表达系统的架构、行为和交互 类图&#xff1a;描绘类、接口之间的关系(继承、实现、关联、依赖等)以及类的内部结构(属性和方法)&#xff0c;直观展现系统的静态…

独一无二:探索单例模式在现代编程中的奥秘与实践

设计模式在软件开发中扮演着至关重要的角色&#xff0c;它们是解决特定问题的经典方法。在众多设计模式中&#xff0c;单例模式因其独特的应用场景和简洁的实现而广受欢迎。本文将从多个角度详细介绍单例模式&#xff0c;帮助你理解它的定义、实现、应用以及潜在的限制。 1. 什…

打造心灵栖息地:YY日记App——原型设计分享

YY日记App是一个专为年轻人打造的心灵日记应用,旨在提供一个私密、个性化的日记记录平台。在本篇博客中,我将分享我对YY日记App的原型设计思路和实现过程。一、用户研究在设计YY日记App的原型之前,我进行了深入的用户研究,明确了目标用户群体为年轻人,他们希望有一个简洁易…

cpu scheduling

基本概念多道程序设计的目的将CPU的利用率最大化 多个进程同时存在于内存(并发),当一个进程暂不使用cpu时,系统调用另一个进程占用cpu。 cpu调度程序whenever the cpu becomes idle(空闲) the operating system must select one of the processes in the ready queue to be…

毕业设计4.17

后台返回数据在安卓端列表化显示,数据处理出错

从入门到精通C++之类和对象(续)

目录 初始化列表构造函数&#xff1f;拷贝构造&#xff1f;浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表&#xff1a;简化代码&#xff0c;提高效率 在编程中&#xff0c;初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组(基础题)

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

NGINX Ingress Controller 设置未配置过的域名增加默认路由

背景 k8s 集群对应的公网 slb ip 经常被人绑定域名,监控侧经常会收集到 502 相关状态码的异常告警,着手处理这种bad case策略 1. 所有没有在ingress 配置过的域名要进行处理,即不是公司的、非法绑定到slb 上的域名要加上一条策略 2. NGINX Ingress Controller 设置未配置过…

基于达梦数据库开发-Java篇

文章目录 前言一、示例展示1.环境准备2.采用基础的jdbc调用3.采用扩展的mybatis调用 二、注意事项1.使用路径注解2.数据库对象的准确引用 三、可能异常1.无效的表或视图名2.无效的表或视图名3.网络通信异常 总结 前言 达梦提供了JDBC方式的驱动以便进行Java开发。默认情况下相…

web安全学习笔记(9)

记一下第十三课的内容。 准备工作&#xff1a;在根目录下创建template目录&#xff0c;将login.html放入其中&#xff0c;在该目录下新建一个reg.html。在根目录下创建一个function.php 一、函数声明与传参 PHP中的函数定义和其他语言基本上是相同的。我们编辑function.php …

基于RAM的几何变换——平移

基于RAM的几何变换——平移 一、平移的基本概念平移的概念很好理解,但是在具体操作中可能会涉及到两个问题:平移量有正数也有负数,涉及到Verilog语法中的有符号数处理 平移会导致部分像素超出我们的显示范围,对这部分的像素应当做丢弃处理二、MATLAB实现实现代码和实验结果…

IIC总线读取温度湿度传感器数据实验

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) //微秒级延时 {unsigned int i 2000;while(i-…

C++ stl容器list的底层模拟实现

目录 前言&#xff1a; 1.创建节点 2.普通迭代器的封装 3.反向迭代器的封装 为什么要对正向迭代器进行封装&#xff1f; 4.const迭代器 5.构造函数 6.拷贝构造 7.赋值重载 8.insert 9.erase 10.析构 11.头插头删&#xff0c;尾插尾删 12.完整代码简单测试 总结&…

Day104:漏洞发现-漏扫项目篇武装BURP浏览器插件信息收集分析辅助遥遥领先

目录 插件类-武装BurpSuite-漏洞检测&分析辅助 1、如何加载插件&#xff1a; 2、漏洞检测类&#xff1a; Fiora TsojanScan RouteVulScan APIKit 3、分析辅助类&#xff1a; 插件类-武装谷歌浏览器-信息收集&情报辅助 HackBar Heimdallr Wappalyzer FindS…

学会解压

1,自我疗愈 压力日志拒绝精神内耗

JavaSE图书管理系统实战

代码仓库地址&#xff1a;Java图书管理系统 1.前言 该项目将JavaSE的封装继承多态三大特性&#xff0c;使用了大量面向对象的操作&#xff0c;有利于巩固理解 &#xff08;1&#xff09;实现效果 2.实现步骤 第一步先把框架搭建起来&#xff0c;即创建出人&#xff1a;管理员和…

Java 集合(ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet)【补充复习】

Java 集合&#xff08;ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet&#xff09;【补充复习】 Java 集合概述Collection 接口继承树Map 接口继承树 Collection 接口方法使用 iterator 接口遍历集合元素使用 forearch 遍历集合元素 List 接口List 实…