SpringBoot应用中扫描自定义注解
使用背景
需要通过业务键值来调用不同的类里的不同方法
重点描述
引入依赖
<dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.10.2</version> </dependency>
扫描注解
@Configuration public class BusiIDConfig { private Map<String, BusiMethodInfo> methodInfoMap = new HashMap<>(); @PostConstruct() public void init(){ String basePackage = "com.wywtime.comb"; Reflections f = new Reflections(basePackage); Set<Class<?>> set = f.getTypesAnnotatedWith(DataComb.class); for (Class<?> c : set) { for(Method method:ReflectionUtils.getMethods(c, ReflectionUtilsPredicates.withAnnotation(BusiID.class))){ BusiID busiID = method.getAnnotation(BusiID.class); methodInfoMap.put(busiID.name(),new BusiMethodInfo(c,method)); } } } public Map<String, BusiMethodInfo> getMethodInfoMap() { return methodInfoMap; } }
方法调用
public class BusiPOExecutor { public static void doMethod(String busiId) throws Exception { BusiMethodInfo methodInfo = AppCtxUtil.getBean(BusiIDConfig.class).getMethodInfoMap().get(busiId); methodInfo.getMethod().invoke(AppCtxUtil.getBean(methodInfo.getClazz())); } }
源码
本文来自博客园,作者:白首码农,转载请注明原文链接:https://www.cnblogs.com/bsmn/p/16436185.html
分类:
JAVA
标签:
java
, springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下