0

我正在尝试根据Scanning Java annotations at runtime中的答案编写自定义注释扫描器。

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

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

问候,

阿努普

4

1 回答 1

2

假设您的主类带有注释@SpringBootApplication,则可以使用ApplicationContext::getBeansWithAnnotation()

@Service
public class MainClassFinder {

    @Autowired
    private ApplicationContext context;

    public String findBootClass() {
        Map<String, Object> annotatedBeans = context.getBeansWithAnnotation(SpringBootApplication.class);
        return annotatedBeans.isEmpty() ? null : annotatedBeans.values().toArray()[0].getClass().getName();
    }
}
于 2018-10-14T19:17:04.327 回答