- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用作 flex-blazeds 端点的 spring 组件(使用 @RemotingDestination
),现在我需要将其重新用作 REST 端点。
除了现有的 blaze-ds servlet 之外,我所做的是创建一个额外的 rest servlet(当然是 DispatcherServlet
类型)。
然后我想使用 REST 访问相同的组件(因此我以前使用 question ),我发现我得到了 404。
我的 rest-servlet.xml 配置文件看起来像这样:
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
我的 ContextLoaderListener
使用我所有的 spring 上下文文件,其中包括那些组件的组件扫描。
由于 flex-servlet 访问这些由全局上下文扫描的 @Component beans 没有问题,我假设 rest-servlet 也可以访问它们,我只需要将注释添加到组件。
奇怪的是,当我明确地为这些组件所在的包添加组件扫描时,其余调用就起作用了。
这意味着这些组件 bean 被创建了两次,一次用于全局上下文(因为它扫描包含此 flex servlet 扫描的配置文件),一次用于 rest-servlet 上下文(我用一个简单的静态验证了这一点计数器和类上的锁)。
我的问题是为什么 rest-servlet 不能看到 flex-servlet 可以看到的 bean?
最佳答案
虽然 servlet appcontext 确实可以访问来自 ContextLoaderListener
appcontext 的 beans,但在将 HTTP 调用映射到 Controller 时不会引用这些 beans。所有 Controller bean 都必须直接在 servlet 的应用上下文中声明(或扫描),否则它们将被忽略。
我建议您将 REST 入口点注释(即 @RequestMapping
)与 BlazeDS 的注释分开。例如,从您的其他帖子中获取您的 UserService
类:创建一个 UserController
类,在其上放置 REST 注释,然后从 UserController
委托(delegate)给用户服务
。 UserController
将在 servlet 应用上下文中声明,并从 ContextLoaderListener
上下文中注入(inject) UserService
。
关于java - 为什么 WebApplicationContext 无法访问我的 spring 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679976/
我需要 ApplicationContext.xml 的上下文,我在 web.xml 中将其提供为 org.springframework.web.context.Cont
上一篇解析了 DispatcherServlet 与 ContextLoaderListener 这两个类,解析了应用初始化与请求处理的流程,但还有一些组件需要解析: ConfigurableWebA
我有这个测试类的代码: @ContextConfiguration(locations = { "classpath:/test/BeanConfig.xml" }) @WebAppConfigura
我想从桌面应用程序启动嵌入式 Tomcat 服务器。在 Tomcat 容器内运行的 web 应用程序是通过 Spring 的 WebApplicationInitializer 配置的(现在我只是扩展
我是 spring MVC 的新手。所以我从非常简单的 MVC 应用程序开始。在此应用程序中,我正在尝试提交登录表单,但出现以下提到的错误: SEVERE: Servlet.service() for
在 Spring 框架引用中我发现了这个: The ApplicationContext interface has a few other methods for retrieving beans,
我知道配置 OSIVF 是一个常见的痛点。我已经阅读了过去几天能找到的所有页面,但似乎没有什么能让我解决这个问题。我已经成功地让自己感到困惑了。我试图保持这个配置非常简单,因为网络应用程序非常简单。嗯
我写了这个测试类: @ContextConfiguration(locations = { "classpath:/test/BeanConfig.xml" }) public class Candi
我在我的应用程序中声明了两个 Spring 上下文 - 一个用于 Spring-MVC 请求,另一个用于 Flex/BlazeDS messagebroker 请求,映射到不同的 url-patter
我是 Spring Security 新手 我有 web.xml contextConfigLocation /WEB-INF/applicationContext-s
我有一个 Spring 应用程序。出于某些原因,我有一个标准的 servlet,我需要该 servlet 才能访问一些 spring bean(我知道这并不理想,将来我会寻找更好的东西)。 在 Web
这个问题已经有答案了: No WebApplicationContext found: no ContextLoaderListener registered? (2 个回答) 已关闭 6 年前。 我
我注意到org.springframework.web.servlet.mvc.AbstractController中有getWebApplicationContext。这意味着spring程序员可以
这个问题已经有答案了: Difference between applicationContext.xml and spring-servlet.xml in Spring Framework (6
我遇到过这样的情况:我使用 ServletRegistrationBean 向 Spring 父 Web 应用程序上下文注册两个子 Web 应用程序上下文,并为每个子 Web 应用程序上下文提供不同的
在Tomcat(或其他服务器)中部署了两个WAR,foo1.war 和foo2.war。所有的spring bean都定义在foo1.war中,但是有没有可能在foo2.war中部署的servlet中
这个问题在这里已经有了答案: No WebApplicationContext found: no ContextLoaderListener registered? (2 个答案) 关闭 5 年前
我有一个带有两个 web 应用程序(foo 和 bar)的 tomcat 服务器,它们具有相同的部署 war 。部署使用标准的 Spring/Hibernate 设置。我假设这两个 webapps 将
当我关闭 Tomcat 时,我观察到 Spring WebApplicationContext 的正确关闭和清理。但是,当我重新部署基于 Spring 的 WAR(通过将新 WAR 复制到 webap
我正在尝试创建一个简单的 Spring 3 应用程序并拥有以下文件。请告诉我这个错误的原因 下面是我的 web.xml Spring2 index.jsp
我是一名优秀的程序员,十分优秀!