检测代码是否正在作为基于Spring的应用程序的一部分运行

时间:2019-09-12 20:06:33

标签: java spring spring-boot

我有一个库,该库通常作为组件内置在第三方软件中。万一它在Spring中运行,还有另外一个库增加了对主库的Spring支持,在该库中,诸如数据库连接之类的某些处理方式有所不同。

我想做的是确保当主库作为基于Spring的应用程序的一部分运行时,帮助程序库也存在。因此,我需要以某种方式检测运行该库的应用程序是否基于Spring。什么是理智的方法?

我有一个可行的想法,那就是检查Spring核心的一部分是否存在,像这样:

boolean isSpringApplication = false;
boolean isSpringSupportPresent = false;

// Check Spring
try {
   Class.forName("org.springframework.some.core.Class");
   isSpringApplication = true;
} catch(ClassNotFoundException e) {
   // This is fine
}

// Check Spring Support Lib
try {
   Class.forName("org.mylibrary.spring.support.Class");
   isSpringSupportPresent = true;
} catch(ClassNotFoundException e) {
   // This is fine
}

if (isSpringApplication && !isSpringSupportPresent) {
    LOGGER.error("Application is running within Spring but the Spring Support Library is not present.");
}

这是解决问题的合理方法吗?如果是这样,最好的Spring类是什么?

0 个答案:

没有答案