Java WAR - 从外部 JAR 加载 Spring bean

2023-12-14

我想在我的 Spring MVC Web 应用程序(打包为 WAR)中加载一些带有注释的 Spring 框架 bean@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 方法。

更新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 使用通配符获取它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java WAR - 从外部 JAR 加载 Spring bean 的相关文章

  • Spring 3.2 Autowire 泛型类型

    所以我在 Spring 3 2 中有很多泛型 理想情况下我的架构应该是这样的 class GenericDao
  • 在根应用程序上下文中声明的 Spring @Controllers

    Spring Web 应用程序有两个上下文 Web 上下文 子上下文 和根上下文 父上下文 如果 Controller豆子定义在dispatcher servlet xml 网络环境 一切都很好 但是如果控制器 bean 是在父上下文中定义
  • 设置惰性静态变量首先初始化然后分配?

    我意识到static变量是隐式的lazy 这真的很棒 执行以下操作在第一次调用之前不会创建实例 static var test Test 但是 将一个新实例分配给static变量初始化原始实例 然后分配新实例 这对我来说很麻烦 SomeTy
  • MVC 3 将实体作为接口传递

    我目前正在开发一个 MVC 3 项目 使用 Ninject 作为我的 DI 业务对象存储在单独的程序集中 我遇到了控制器参数的问题 当回发 CRUD 操作时 我收到错误 无法创建接口实例 我知道您无法创建接口的实例 但似乎解决此问题的唯一方
  • @DependsOn 注释的逆

    Spring 可能还有其他 DI 容器 但我使用的是 Spring 识别 DependsOn 注释 您可以使用它来标识必须在该 bean 之前启动的任何其他 bean 例如 Component DependsOn initiatedFirs
  • Spring MVC 控制器中的硬编码@RequestMapping URL

    我正在研究 Spring 3 并在一个简单的 Web 应用程序中使用它 现在我正在使用注释实现 Spring MVC 控制器 我想知道 有没有使用的最佳实践 RequestMapping注解 我的意思是 我发现通常这个注释中映射的 URL
  • 依赖注入在 C++ 中有用吗

    C uses 依赖注入 DI 很多有一个lossless and testable平台 为此 我需要一个interface也许还有一个DI or 控制反转 IoC 容器为了解决我的情况 但是在 C 中如何做到这一点呢 我读过一些相关内容 似
  • 让 UnityContainer 变得非线程安全有哪些陷阱?

    我正在向我的库添加依赖项注入 并为此使用 Unity 我想知道是否需要采取一些额外的步骤来使 Unity 容器线程安全 我发现了几篇讨论线程安全容器的文章 例如 http www fascinatedwithsoftware com blo
  • Spring Security PermitAll 不允许匿名访问

    我有一个方法 我想允许匿名和经过身份验证的访问 我正在使用 Spring Security 3 2 4 和基于 Java 的配置 重写的配置方法 在我的自定义配置类中扩展WebSecurityConfigurerAdapter 有以下内容h
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • IllegalStateException:单元测试中没有为范围“会话”注册范围

    我有一个修改版本mkyong MVC 教程 http java lang IllegalStateException 20No 20Scope 20registered 20for 20scope 20 session 我添加了一个业务层类
  • favicon.ico 在 Tomcat 7.0 的 spring mvc 3.2.2 中不显示?

    我是 spring mvc 新手 我的 favicon ico 没有显示在使用 spring 3 2 2 使用 tomcat 7 0 的浏览器选项卡中 我尝试查看相关的谷歌搜索 但仍然无法让它显示在浏览器选项卡中 FF Chrome IE
  • 使用策略和工厂模式进行依赖注入

    我正在开展一个业余项目 以更好地理解控制反转和依赖注入以及不同的设计模式 我想知道是否有将 DI 与工厂和策略模式结合使用的最佳实践 当策略 从工厂构建 需要每个可能的构造函数和实现不同的参数时 我面临的挑战就出现了 因此 我发现自己在服务
  • JPA @Entity 内的 Bean 注入

    是否可以将bean注入到JPA中 Entity使用Spring的依赖注入 我尝试 Autowire ServletContext 但是 虽然服务器确实启动成功 但在尝试访问 bean 属性时收到 NullPointerException A
  • Spring 3 集合绑定

    如何将集合绑定到输入数据的表单 不用于显示 例如为一个Set
  • 为什么这个 Thymeleaf 表单与选择字段的绑定不起作用?

    我有两个模型 Patient and Study 在里面Study型号 我想用Patient的 Id 作为外键 我的Study型号 不含 getter setter 如下 Entity Table name Study public cla
  • Spring安全+LocaleResolver

    我需要在身份验证成功后更改区域设置 区域设置解析器
  • glassfish安装中的servlet-api.jar在哪里?

    我们正在将项目从 Sun App 服务器迁移到 Glassfish 为了进行编译 我们需要将类路径设置为 servlet 容器中的 servlet api jar 在 Glassfish 安装中的哪里可以找到这些罐子 Thanks 我猜您想
  • Java - 通过相对路径加载dll并将它们隐藏在jar中

    PART 1 我正在开发一个 Java 应用程序 应该作为 jar 发布 该程序依赖于JNI调用的C 外部库 要加载它们 我使用以下方法System load使用绝对路径 效果很好 然而 我真的想将它们 隐藏 在 JAR 中 所以我创建了一
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr

随机推荐

  • 使用 VBA HTML 从网页下载文件

    几个月来 我一直在拼命地尝试自动化一个过程 在这个过程中 csv 文件被下载 管理并保存在给定的位置 到目前为止 我只能使用 excel vba 打开网页并单击底部下载 csv 文件 但代码停止并需要手动干预才能完成 如果可能的话 我希望它
  • C/C++ 解析器如何工作?

    我花了很多时间研究 PHP 的解析器是如何工作的 它将 PHP 代码翻译为最终的 C 代码 但是 C 代码如何转换为可执行文件呢 BTW 如何从数学角度判断语言A是否可以以某种方式转换为语言B 这是一个非常伟大且非常深刻的问题 涉及计算机科
  • 从其他分支中挑选一组提交,跳过空提交

    我正在使用合并一堆提交cherry pick git rev list reverse something begin something end git cherry pick stdin 然后以错误消息结束 You are curren
  • 如何验证 vaadin 制作的表单中的字段

    我正在使用 vaadin 制作一个 Java 项目 现在我有一个用户注册表 如下所示 public class RegistrationComponent extends CustomComponent implements View pu
  • 使用手势/动作创建气泡,例如 Android 中的 Apple 音乐应用程序 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想实现类似 Apple 的新音乐应用程序 它与 iTunes 同步 泡泡在移动 根据心情我们可以选择音乐 流派等 我想要在 Android 中使用这种带有移动气泡的手势 谁能帮
  • 迁移到 androidx 后,膨胀类 androidx.appcompat.widget.FitWindowsFrameLayout 时出错

    我迁移到AndroidX 然后如果我尝试使用以下命令将项目运行到模拟器中 则会收到错误API 29 在模拟器 真实设备上没有问题API 28和以前的 java lang RuntimeException Unable to start ac
  • 在SVN中共享文件

    我正在从 VSS 迁移到 SVN 但我不知道如何在 SVN 中共享文件 基本上我们在VSS中有以下结构 MOSS Components ComponentA bin ComponentB bin GAC Mirror GAC Mirror
  • 如何在 Java 中执行与 StringBuilder 附加相反的操作?

    下列情况的反面是什么 savedPlanets append planet getDisplayName 我有一个列表 每次用户单击复选框时我都会添加行星的名称 如果清除该复选框 我想从保存的行星中删除该名称 您可以执行以下操作 saved
  • Fluent nHibernate 错误 - 无法编译映射文档:(XmlDocument)

    我已阅读有关 Fluent nHibernate 的所有问题 但没有找到答案 我正在尝试运行入门教程here我收到此错误 无法编译映射文档 XmlDocument 当我运行 CreateSessionFactory 时发生错误 privat
  • CakePHP:调用非对象上的成员函数 find()

    查看我的管理索引时出现以下错误 Notice 8 Undefined property ClientsController Clients APP controllers clients controller php line 27 Cal
  • Storyboard 无法实例化名为 UIStoryboardUnwindSegueTemplate 的类崩溃

    我刚刚完成了有关 Storyboard 的 Apple 教程 并在运行 iOS 5 1 1 的 iPhone 4 上运行了该应用程序 在模拟器上 当我按下添加按钮时 我得到从底部向上滑动的模态视图 没有崩溃 我可以输入数据 点击完成按钮并显
  • 如何定义“类型”的含义

    摘自埃里克 利珀特的博客 about 是 的意思是什么 类型的一个常见概念是 类型是值的集合 而赋值兼容性只是检查给定值是否是必要集合的成员 但 C 中的情况并非如此 他给出的反例是null is string回报false but str
  • wso2 身份服务器 oauth userinfo 仅返回 sub

    我已经在wso2身份服务器中设置了SP 并且能够使用playground在auth2中获取access token 参考 https docs wso2 com display IS510 OAuth 2 0 with WSO2 Playg
  • 如何提高 Django 管理搜索中相关字段的查询性能 (MySQL)

    在 Django 中我有这个 模型 py class Book models Model isbn models CharField max length 16 db index True title models CharField ma
  • 如何让 OS X 识别驱动器号?

    我知道 异端 但我陷入了困境 我有很多使用绝对路径名的配置文件 这导致 OS X 和 Windows 之间不兼容 如果我能让 OS X 我敢打赌是两者中更灵活的一个 识别问 foo bar bim properties作为有效的绝对文件名
  • 在 Windows 上使用参数静默运行安装程序 (.exe)

    我有一个 Windows 安装文件 exe 用于安装软件 这是第三方可执行文件 在安装过程中 它需要特定的值并有一个 UI 我想以静默方式运行此 setup exe 无需任何手动干预 即使是提供参数值 在花了一些时间谷歌搜索该方法之后 我觉
  • 根据用户输入编写包含变量 WHERE 的查询

    我在查询时遇到问题 我希望它做的是检查每个变量是否存在 如果不存在则忽略它们 我还想在表格中显示结果 任何帮助将不胜感激 到目前为止我所拥有的 这是我的代码 目前 它返回一个包含数据库中所有结果的数组 但如果我将 WHERE 子句中的 OR
  • 如何从 WSDL URL 生成 WSDL 文件?

    我的问题是我创建了一个网络服务客户端wsimport当创建其服务对象时 由于 HTTPS 它失败了 如下所示 MyService Service service new MyService Service new URL https www
  • 检查 JSON 中是否存在对象

    我需要知道 JSON 字符串中是否存在某个对象 并根据该对象的存在执行不同的操作 如果它不存在 我想省略该对象 因为它会抛出 NullPonterException 我尝试过使用if但没有成功 有人可以告诉我如何检查对象的存在吗 先感谢您
  • Java WAR - 从外部 JAR 加载 Spring bean

    我想在我的 Spring MVC Web 应用程序 打包为 WAR 中加载一些带有注释的 Spring 框架 bean Service来自外部 jar 它负责访问数据库和位于类路径中在 WEB INF lib 下 如果可能的话 最好使用以下