我正在尝试根据Scanning Java annotations at runtime中的答案编写用于自定义注释的扫描程序。
但是,为了加快处理速度,我只想扫描主包(具有主类及其子包的包)下的类。确定最简单的方法来确定包名称是从主类。
我正在编写的代码最终将存储在一个Spring Boot应用程序将使用的库中。因此,我无法知道主类的名称。在Spring Boot应用程序中,是否可以在运行时确定主类的名称?
此致
Anoop
答案 0 :(得分: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();
}
}