春季启动在运行时获取主类的名称(Spring Boot get name of main class

2019-10-29 06:04发布

我想写基于在回答定制注释扫描仪在运行时扫描Java注解 。

然而,为了加快这一进程,我只想要扫描的主包下的类(包里面有主类和它的子包)。 盘算了一下,最简单的方法来确定包名称将是从主类。

我写的代码将在其中将被Spring启动应用程序中使用的库结束。 所以我不知道主类的名称的方式。 有没有一种方法,以确定在运行时在春季启动应用程序的主类的名字吗?

问候,

Anoop

Answer 1:

假设你的主类与注释@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();
    }
}


文章来源: Spring Boot get name of main class at runtime