如何在库的上下文中实例化Spring?

时间:2010-03-23 17:17:24

标签: spring

我正在寻找一个示例,该示例演示如何在一组普通的,不可执行的Java库/ JAR中打包的类的上下文中实例化Spring容器。这里的核心目的是提供依赖注入(主要用于日志记录)

我认为基本问题是不可执行的jar没有单个启动点 - 没有主要方法。那么我该如何创建和配置必要的应用程序上下文呢?

3 个答案:

答案 0 :(得分:1)

参见"Glue Code and The Evil Singleton"的春季章节。这描述了如何使用ContextSingletonBeanFactoryLocator在不将其作为容器生命周期的一部分提供的情况下引导Spring。 Spring将处理维护对上下文的单例引用的令人反感的过程,JAR代码可以在其中休闲访问。不需要入口点或启动例程,它可以根据需要随意执行。

答案 1 :(得分:0)

Apache CXF包含此代码。但是,说实话,它大约有5行代码。

答案 2 :(得分:0)

那么你的框架必须以某种方式提供必要的起点,例如库的用户必须在某处调用的工厂方法。另一种方法是使用一个静态块,它将在加载类后立即执行,例如:

public class BootStrap
{
    private static final ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    public static ApplicationContext getContext()
    {
        return context;
    }

    private BootStrap() {}
}