Java WAR-从外部JAR加载Spring Bean

我想在我的Spring MVC Web应用程序(打包为WAR)中加载一些Spring框架bean ,这些bean 由外部jar

注释,该jar负责访问数据库并 / WEB-INF / lib下 。如果可能的话,希望使用

注释自动加载它们。

我已经成功地遵循了这个link1中的解决方案:

this.ctx = new ClassPathXmlApplicationContext("services-context.xml");

this.myAService = ctx.getBean("myAService");

但是,此解决方案使用Spring API函数 ,这被认为是不好的做法。

我还尝试了两件事来加载外部jar的applicationContext:

  • WAR的appContext.xml:

    <import resource="classpath*:/WEB-INF/lib/pathToExternalJar/applicationContext.xml">

  • WAR的Web xml->加载jar的appContext,如此处所述(link3)。(例如* applicationContext.xml):

        <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    classpath:localSpringContext.xml

    classpath:*applicationContext.xml

    </param-value>

    </context-param>

正确加载这些bean的最佳方法是什么,应该如何做?

回答:

WAR的appContext.xml和WAR的Webxml都是可行的。如果需要同时基于localSpringContext.xml和外部jar的applicationContext.xml运行集成测试,则建议使用WAR的appContext.xml方法。

更新1:

WAR的appContext.xml:

<import resource="classpath:{classpath}/applicationContext.xml"/>

WAR的Web xml:

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

classpath:localSpringContext.xml

classpath:{classpath}/applicationContext.xml

</param-value>

</context-param>

例如,如果您的applicationContext.xml在软件包:com / gmail / hippoom下

您可以通过带通配符的classpath:com / gmail / hippoom / applicationContext.xml或classpath

*:applicationContext.xml来获取。

以上是 Java WAR-从外部JAR加载Spring Bean 的全部内容, 来源链接: utcz.com/qa/413093.html

回到顶部