关于ZAKER 融媒体解决方案 合作 加入

spring-mvc – Java WAR – 从外部 JAR 加载 Spring.

CocoaChina 11-11

我想在我的Spring MVC Web 应用程序 ( 打包为 WAR ) 中加载一些 Spring 框架 bean, 该框架 bean 使用来自外部 jar 的 @Service 注释 , 该 jar 负责访问数据库并位于 / WEB-INF / lib 下的类路径中 . 如果可能 , 最好使用 @Autowired 注释自动加载它们 .

我已成功遵循link1中的解决方案:

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

但是 , 此解决方案使用 Spring API 函数 getBean, 这被认为是一种不好的做法 ( 参见link2 ) .

我也试过 , 加载外部 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 的 web xml 都是可行的 . 如果您需要经常基于 localSpringContext.xml 和外部 jar 的 applicationContext.xml 运行集成测试 , 我建议使用 WAR 的 appContext.xml 方法 .

Updated1:

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 位于 package:com / gmail / hippoom 下

你可以通过 classpath 得到它:com / gmail / hippoom / applicationContext.xml 或 classpath *:带有通配符的 applicationContext.xml.

以上内容由"CocoaChina"上传发布 查看原文
相关标签 gmail

觉得文章不错,微信扫描分享好友

扫码分享