我在春季创建了一个共享库,该库将在不同的Spring Boot应用程序之间共享。 我希望这个共享库是独立的,所以我为这个共享库创建了一个applicationContext:
@Configuration
@ComponentScan(basePackages="a.b.c")
@PropertySource("classpath:mylib.properties")
public class SpringContext {
}
然后,在客户端直接调用的此共享库的类中的一种方法中,
public class SharedLib {
private static ApplicationContext appContext;
public void consumersCallDirectly(){
ApplicationContext ctx = getApplicationContext();
ClassA clsA = ctx.getBean(ClassA.class);
...........
............
}
private static ApplicationContext getApplicationContext() {
if (appContext == null) {
appContext = new AnnotationConfigApplicationContext(SpringContext.class);
}
return appContext;
}
}
我想知道是否像我在代码中那样将applicationContext用作静态变量会带来任何不利影响。除了像这样围绕全局状态编写单元测试时,我没有其他困难。但除此之外,它似乎很好地解决了我的目的。
有人知道这种方法有什么注意事项吗?是交易/交易量大的系统类型?