Spring Boot 在运行时获取主类的名称

我正在尝试根据在运行时扫描 Java 注释中的答案为自定义注释编写扫描器。

但是,为了加快进程,我只想扫描主包(包含主类及其子包的包)下的类。认为确定包名称的最简单方法是从主类。

我正在编写的代码最终会出现在 Spring Boot 应用程序将使用的库中。所以我无法知道主类的名称。有没有办法在 Spring Boot 应用程序中在运行时确定主类的名称?



一只斗牛犬
浏览 434回答 1
1回答

qq_笑_17

假设你的主类用 注释@SpringBootApplication,它可以使用ApplicationContext::getBeansWithAnnotation():@Servicepublic class MainClassFinder {&nbsp; &nbsp; @Autowired&nbsp; &nbsp; private ApplicationContext context;&nbsp; &nbsp; public String findBootClass() {&nbsp; &nbsp; &nbsp; &nbsp; Map<String, Object> annotatedBeans = context.getBeansWithAnnotation(SpringBootApplication.class);&nbsp; &nbsp; &nbsp; &nbsp; return annotatedBeans.isEmpty() ? null : annotatedBeans.values().toArray()[0].getClass().getName();&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java