我想写基于在回答定制注释扫描仪在运行时扫描Java注解 。
然而,为了加快这一进程,我只想要扫描的主包下的类(包里面有主类和它的子包)。 盘算了一下,最简单的方法来确定包名称将是从主类。
我写的代码将在其中将被Spring启动应用程序中使用的库结束。 所以我不知道主类的名称的方式。 有没有一种方法,以确定在运行时在春季启动应用程序的主类的名字吗?
问候,
Anoop
我想写基于在回答定制注释扫描仪在运行时扫描Java注解 。
然而,为了加快这一进程,我只想要扫描的主包下的类(包里面有主类和它的子包)。 盘算了一下,最简单的方法来确定包名称将是从主类。
我写的代码将在其中将被Spring启动应用程序中使用的库结束。 所以我不知道主类的名称的方式。 有没有一种方法,以确定在运行时在春季启动应用程序的主类的名字吗?
问候,
Anoop
假设你的主类与注释@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();
}
}