如何在web.xml中注册Spring @Configuration注解的类而不是applicationContext.xml文件?

2023-12-31

我在 Web 应用程序中一起使用 jsf 和 spring。我在一个配置类中配置了数据源和会话工厂,该类使用注释,例如@Configuration, @ComponentScan etc. 我的项目中没有任何 applicationContext.xml 文件因为我正在处理配置类中上下文 xml 的每个条目。测试用例成功运行,但是当我部署 Web 应用程序时,出现错误

java.lang.IllegalStateException:未找到 WebApplicationContext:否 ContextLoaderListener 已注册?

现在,如果我在 web.xml 中提供侦听器类,

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

它给了我错误,

找不到/WEB-INF/applicationContext.xml

根据文件ContextLoaderListener,确实,如果我不给contextConfigLocation参数输入web.xml明确地,它将搜索名为的默认 spring 上下文文件applicationContext.xml in web.xml。现在,如果我不想使用 spring 上下文文件并使用注释进行所有配置,我该怎么办?我应该如何注册监听类ContextLoaderListener这样,在不使用 xml 文件并仅使用注释的情况下,我就能够使用 spring 和 jsf 运行我的 Web 应用程序?


In web.xml你需要引导上下文AnnotationConfigWebApplicationContext:

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            org.package.YouConfigurationAnnotatedClass
        </param-value>
    </init-param>
</servlet>

并且不要忘记使用@EnableWebMvc让您的 MVC 注释生效。

进一步阅读:

  • Spring 3.1 MVC 增强 http://blog.springsource.com/2011/06/13/spring-3-1-m2-spring-mvc-enhancements-2/
  • Spring 3.1 MVC命名空间增强和配置 http://blog.springsource.com/2011/02/21/spring-3-1-m1-mvc-namespace-enhancements-and-configuration/

编辑为“评论跟进” => 成为图灵完备:

是的,你当然需要一个倾听者。虽然上面完全回答了问题“如何在web.xml中注册Spring @Configuration注解的类而不是applicationContext.xml文件”,这里有一个example http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#beans-java-instantiating-container-web来自 Spring 官方文档,布局了完整的web.xml:

<web-app>
  <!-- Configure ContextLoaderListener to use AnnotationConfigWebApplicationContext
       instead of the default XmlWebApplicationContext -->
  <context-param>
      <param-name>contextClass</param-name>
      <param-value>
          org.springframework.web.context.support.AnnotationConfigWebApplicationContext
      </param-value>
  </context-param>

  <!-- Configuration locations must consist of one or more comma- or space-delimited
       fully-qualified @Configuration classes. Fully-qualified packages may also be
       specified for component-scanning -->
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>com.acme.AppConfig</param-value>
  </context-param>

  <!-- Bootstrap the root application context as usual using ContextLoaderListener -->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- Declare a Spring MVC DispatcherServlet as usual -->
  <servlet>
      <servlet-name>dispatcher</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- Configure DispatcherServlet to use AnnotationConfigWebApplicationContext
           instead of the default XmlWebApplicationContext -->
      <init-param>
          <param-name>contextClass</param-name>
          <param-value>
              org.springframework.web.context.support.AnnotationConfigWebApplicationContext
          </param-value>
      </init-param>
      <!-- Again, config locations must consist of one or more comma- or space-delimited
           and fully-qualified @Configuration classes -->
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>com.acme.web.MvcConfig</param-value>
      </init-param>
  </servlet>

  <!-- map all requests for /app/* to the dispatcher servlet -->
  <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>/app/*</url-pattern>
  </servlet-mapping>
</web-app>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在web.xml中注册Spring @Configuration注解的类而不是applicationContext.xml文件? 的相关文章

  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 创建一个 JSON 对象以在 Spring Boot 测试中发布

    我想编写基本测试来使用 JSON 负载在 users URL 上执行 POST 请求来创建用户 我找不到如何将新对象转换为 JSON 到目前为止有这么多 这显然是错误的 但解释了目的 Test public void createUser
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • Python 3:如何让“else”语句仅在“if”语句都不为真时才适用?

    抱歉 这里是初学者 尝试使该程序扫描某个字母组合 如果没有找到任何字母组合 则返回 else 语句 但是 我不知道如何仅当所有 if 语句返回 False 时才应用 else 语句 这是我的代码 class color BOLD 033 1
  • 正确访问存在重复索引值的切片

    我有一个带有索引的数据框 有时包含具有相同索引值的行 现在我想对该数据帧进行切片并根据行索引设置值 考虑以下示例 import pandas as pd df pd DataFrame index 1 2 2 3 values 10 20
  • 在 Selenium python 中通过 xpath 模式查找元素

    我正在使用 selenium python 和 lettuce 来测试 django 应用程序 以下模式中有许多具有 xpath 的元素 我不知道文档中存在多少个这些元素 id accordion note 1 id accordion n
  • “查找最近位置”如何运作?

    如今 大多数餐馆和其他企业都拥有 查找地点 http www fedex com Dropoff start 他们网站上的功能列出了给定地址 邮政编码的最近位置 这是如何实现的 将邮政编码与数据库进行匹配是一种简单的 无需思考的方法 但可能
  • C++17 中有 typeid 的反函数吗?

    C 17 是否提供了一种从 typeid 获取类型的方法 或者工厂模式仍然是唯一的方法 type info是运行时值 其确切内容只能通过运行时执行来确定 C 是一种静态类型语言 在编译时 类型一切必须被知道 像这样 type info基于具
  • 通过 spring-data 迭代 MongoDB 中的大型集合

    Friends 我通过 spring data 在 java 项目中使用 MongoDB 我使用存储库接口来访问集合中的数据 对于某些处理 我需要迭代集合的所有元素 我可以使用存储库的 fetchAll 方法 但它总是返回 ArrayLis
  • Mule OAuth2 使用客户端凭证作为 grant_type

    我的要求是使用OAuth2的client credentials grant type来获取Mule中的访问令牌 我想实现一个支持 OAuth 的自定义连接器 我无法使用以下配置来实现它
  • 电脑锁定时如何发送电子邮件?

    我想使用 Excel VBA 发送 Outlook 电子邮件 代码Sendupdate手动运行时有效 我的第二个宏StartTimer旨在当我不在办公桌前时在设定时间执行上述操作 当计算机被锁定时 电子邮件不会发送 当我回到办公桌前时 电子
  • Itext7 HTML2PDF - PDF 文件中的图片未旋转

    我有一个 HTML 文件 其中包含一些旋转的图片 当我将 HTML 文件转换为 PDF 文件时 图片不会旋转 看来 EXIF 0112 没有正确应用 iText Html2Pdf HtmlConverter ConvertToPdf HTM
  • JQuery 字符串包含检查[重复]

    这个问题在这里已经有答案了 我需要检查一个字符串是否包含另一个字符串 var str1 ABCDEFGHIJKLMNOP var str2 DEFG 我应该使用哪个函数来确定 str1 是否包含 str2 你可以使用javascriptin
  • 我可以向另一个域发出 XMLHttpRequest 吗?

    有没有办法将 XMLHttpRequest 与其他域结合使用 我想解析来自 Google 的一些 xml 而无需使用服务器 因此运行起来非常简单 var req getXmlHttpRequestObject req open GET ht
  • Python截断长字符串

    如何在 Python 中将字符串截断为 75 个字符 JavaScript 中是这样完成的 var data saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
  • Windows 上的 npm 安装失败并出现错误签名错误

    我正在使用 nvm 来管理我的节点版本 我有一个使用节点 6 10 2 的项目 像这样简单的事情npm install g gulp我收到以下错误 write EPROTO 101057795 error 1408D07B SSL rout
  • 如何使用c#打开excel文档

    我用过创建新的电子表格并保存到用户文件夹 我希望保存后能够自动打开它 该文件为 xlsx 格式 I tried SpreadsheetDocument Open fileName true 这根本不起作用 我想要代码在用户拥有的任何版本的
  • Chrome 88 时区符号不正确

    Starting from about 20 01 2021 after the Chrome update to version 88 0 the time zone incorrectly processed in applicatio
  • 根据类型返回一个值

    考虑下面的例子 template
  • Apache Zeppelin 问题 - Python 错误

    我对 Apache Zeppelin 有疑问 当我运行一个新的 python 笔记本并尝试执行类似的命令时import dask它会导致以下错误 Traceback most recent call last File tmp 159931
  • 从 UIImage 获取二进制数据

    我有一个要求 我必须将图像从 ios 设备发送到另一个设备 corebluetooth 其他设备是 BLE 设备 基本需求是 1 图像尺寸应为128X160 2 8 位 即每种颜色 8 位 3 3个通道 4 每像素 24 位 5 图像应有
  • SAML2.0认证后调用Graph api。如何获取所需的身份验证令牌

    我们的 Web aap 通过 SAML2 0 与 Azure AD 进行身份验证 类似于this https learn microsoft com en us azure active directory develop active d
  • 如何在web.xml中注册Spring @Configuration注解的类而不是applicationContext.xml文件?

    我在 Web 应用程序中一起使用 jsf 和 spring 我在一个配置类中配置了数据源和会话工厂 该类使用注释 例如 Configuration ComponentScan etc 我的项目中没有任何 applicationContext