- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在将 Spring 插入现有的 Java EE Web 应用程序。我的 web.xml 中有以下几行:
<listener>
<listener-class>com.MyContextListener</listener-class>
</listener>
然后跟随 MyContextListener
类?
public class MyContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
//...
}
}
我应该怎么做才能让MyContextListener
被Spring管理?
已编辑:
我的假设是:Spring 应该创建所有 servlet 和所有 Web 应用程序基础架构,因此 MyContextListener
的 contextInitialized
方法中发生的一切都应该由 Spring 以某种方式处理。我怎么能通过实现我想的一些接口(interface)来实现。如果我错了,请纠正我。谢谢!
最佳答案
嗯,
我们有一个类似的场景,将现有的 Jersey Web 服务应用配置为使用 Spring 进行依赖注入(inject)。我们的 Jersey webapp 扩展了 ContextLoaderListener 如下
public class XServletContextListener extends ContextLoaderListener {
...
@Override
public void contextInitialized(ServletContextEvent arg0) {
super.contextInitialized(arg0);
....
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
super.contextDestroyed(arg0);
....
}
}
其中 ContextLoaderListener 是
import org.springframework.web.context.ContextLoaderListener;
我们包含了 jersey-spring 桥和所有 spring 依赖项,包括 applicationContext.xml 如下
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.xxx.*" />
....
....
</beans>
显然需要确保 XServletContextListener 包含在 web.xml 中,如下所示
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>com.xxx.**.XServletContextListener</listener-class>
</listener>
之后是 servlet 及其 init-param 值和 servlet 映射。您显然可以采用注释配置代替 xml confib,在这种情况下,您需要使用 WebListener 注释。
我们使用各种注解如
@Component for objects
@Service for services
@Repository for DAOs
@Controller for controllers/resources
@ContextConfiguration for tests
一切都由 Spring 框架加载和 Autowiring 。
关于java - 使 ServletContextListener 具有 Spring 意识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39917592/
我使用 Eclipse Maven 插件创建一个 Java EE 7 项目。我的问题是,当我运行应用程序时,不会调用实现 SerlvetContextListener 的类。是什么导致了这个问题? @
我在 Web 应用程序启动阶段 (contextInitialized()) 读取了一个属性文件,并开始考虑如何使这些设置对 servlet“可见”。我是否需要循环遍历键并将每个键添加到上下文中,就像
有什么原因不能在 Java ServletContextListener 中创建变量并且它的值设置和获取与其他任何变量一样。我所拥有的是 SCL 中的 ArrayList 和另一个类中的方法经常使用
实际上,我需要执行一个方法,每次机器重启都需要几个小时才能完成。我已经在 apache tomcat 上部署了我的 Web 应用程序,并且启用了 Apache tomcat 的自动启动。为此,我在 S
我正在研究servlet,我从书中做了一个例子,但我得到了nullpointerexception。 这是我的类(class): package chala; public class Dog { p
我正在尝试在部署我的 war 文件时初始化一个流对象。 我编写了一个实现 ServletContextListener 的 Initializer 类,并向我的 web.xml 添加了一个监听器类标记
如果我有多个 ServletContextListener 并且其中一些在部署描述符中声明而其他带有注释 (@WebListener),如何定义由于应用程序初始化而执行的 ServletContext
我正在尝试使用 servletContainerInitializer 注册一个 servlet,但它似乎不起作用,也许这是我的代码(请查看它),但我开始想知道 ServletContainerIni
我正在阅读有关“Servlet 3.0 中的异步处理支持”的专家(?)教程(http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.h
我有一个 ServletContextListener 来初始化我的数据库。我已将其添加到我的 web.xml 中: util.MySessionListener 当我启动服务器时,一切都很
我需要有一个可通过 JSP 应用程序中的应用程序使用的对象。该对象必须实例化一次,然后在应用程序的生命周期中应使用同一个实例。 我只是 jsp 的初学者,所以我看到了两种实现此目的的方法: 我有一个
ApplicationListener 和 ServletContextListener 有什么区别?你什么时候使用它们? implements ApplicationListener impleme
我已经使用 JAX-WS 开发了一个 Web 服务,并且在 web.xml 中我注册了这个 servlet 上下文监听器。 com.sun.xml.ws.transport.http.ser
我正在创建一个 war 文件 (progressReporter.war) 并将其部署在 Jetty7.2.2.v20101205 上。我在 contextInitialized 方法上有一个系统输出
我制作了基本的 Web 应用程序,其中我采用了一个扩展 TimerTask 的 POJO 类和一个实现 ServletContextListener 的 servlet 类。现在我关心的是我想在控制台
我有一个处理特定传入请求的 servlet。我们将其称为“UpdateUserStats”。我希望调用速度快,但我还需要请求来完成一项相当昂贵的任务。我认为,如果我让 UpdateUserStats
我们在重新加载上下文时遇到多个内存泄漏(在 catalina.out 中发现)。 为了清理这些线程,我创建了 ServletContextListener 的实现。 创建上下文时成功调用了 conte
我想运行一些简单的后台进程计算,但我似乎无法弄清楚。无论我做什么,它都会阻塞。 public class WorkThreadManagerContextLoaderListener implemen
我有一个 InitApp 类 @Component public class InitApp implements ServletContextListener { @Autowired Config
我知道什么是 ServletContextListener 以及如何在 web.xml 中实现/注册它。 但问题如下。在 Web 应用程序开始时,会为每个 javaVM 创建一个监听器实例。然后调用其
我是一名优秀的程序员,十分优秀!