为共享的Spring库创建静态applicationContext

时间:2018-12-12 07:12:42

标签: spring spring-boot

我在春季创建了一个共享库,该库将在不同的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用作静态变量会带来任何不利影响。除了像这样围绕全局状态编写单元测试时,我没有其他困难。但除此之外,它似乎很好地解决了我的目的。

有人知道这种方法有什么注意事项吗?是交易/交易量大的系统类型?

0 个答案:

没有答案