我正在寻找一个示例,该示例演示如何在一组普通的,不可执行的Java库/ JAR中打包的类的上下文中实例化Spring容器。这里的核心目的是提供依赖注入(主要用于日志记录)
我认为基本问题是不可执行的jar没有单个启动点 - 没有主要方法。那么我该如何创建和配置必要的应用程序上下文呢?
答案 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() {}
}