spring初始化web

几年前,我们大多数人习惯到处编写XML配置文件,甚至可以设置简单的Java EE应用程序。 如今,使用Java或Groovy来配置项目已成为首选方式–您只需要看一下Spring框架的其他版本中引入的Gradle或功能,就可以对此进行总结。

现在,我将为Web应用程序配置Spring上下文。

Java EE提供了ServletContainerInitializer接口,该接口允许在Web应用程序启动时通知库。 从Spring 3.1开始,我们有了SpringServletContainerInitializer类,该类通过实例化实现此接口的所有找到的类来处理WebApplicationInitializer ,并根据@Order注释对它们进行排序(未注释的类获得最高的顺序,因此它们将在最后处理)并调用onStartup()方法。

3.2版开始的Spring给我们提供了一些实现WebApplicationInitializer接口的类,首先是AbstractContextLoaderInitializer 。 spring-web模块中包含的此类使用抽象的createRootApplicationContext()方法创建应用程序上下文,并将其委托给ContextLoaderListener ,然后将其注册到ServletContext实例中。 使用此类创建应用程序上下文如下所示:

public class SpringAnnotationWebInitializerextends AbstractContextLoaderInitializer {@Overrideprotected WebApplicationContext createRootApplicationContext() {AnnotationConfigWebApplicationContext applicationContext =new AnnotationConfigWebApplicationContext();applicationContext.register(SpringAnnotationConfig.class);return applicationContext;}}

这是启动Spring Web上下文的最简单方法。 但是,如果我们想体验Spring MVC提供的好处,并且不想手动注册DispatcherServlet ,最好使用另一个类: AbstractDispatcherServletInitializer 。 它扩展了上一类,并添加了两个抽象方法: createServletApplicationContext()getServletMappings() 。 第一个方法返回将传递给DispatcherServlet的WebApplicationContext ,它将自动添加到容器ServletContext中。 请注意,此上下文将被建立为createRootApplicationContext()方法返回的上下文的子级。 第二种方法-您可能已经推论出了-返回在servlet注册期间使用的映射。 如果需要任何自定义过滤器,则还可以重写getServletFilters()方法,因为默认实现只返回空数组。 使用此类的示例性实现可以是:

public class SpringWebMvcInitializerextends AbstractDispatcherServletInitializer {@Overrideprotected WebApplicationContext createRootApplicationContext() {AnnotationConfigWebApplicationContext applicationContext =new AnnotationConfigWebApplicationContext();applicationContext.register(SpringRootConfig.class);return applicationContext;}@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext applicationContext =new AnnotationConfigWebApplicationContext();applicationContext.register(SpringMvcConfig.class);return applicationContext;}@Overrideprotected String[] getServletMappings() {return new String[]{"/*"};}}

现在最后但绝对不是最不重要的一类: AbstractAnnotationConfigDispatcherServletInitializer 。 在这里,我们可以看到简化Spring初始化的进一步步骤-我们不需要手动创建上下文,而只需在getRootConfigClasses()getServletConfigClasses()方法中设置适当的配置类。 我希望您已经熟悉这些名称,因为它们的工作方式与前一种情况完全相同。 当然,由于此类扩展了AbstractDispatcherServletInitializer,我们仍然可以重写getServletFilters() 。 最后,我们可以通过以下方式实现我们的配置:

public class SpringWebMvcSimpleInitializerextends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[] {SpringRootConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[] {SpringMvcConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[]{"/*"};}}
  • 如果您想看到更广泛的上下文,请遵循我的GitHub存储库中的示例: https : //github.com/jkubrynski/spring-java-config-samples/
参考: Java(B)Log博客上的JCG合作伙伴Jakub Kubrynski了解Spring Web初始化。

翻译自: https://www.javacodegeeks.com/2014/01/understanding-spring-web-initialization.html

spring初始化web

spring初始化web_了解Spring Web初始化相关推荐

  1. 了解Spring Web初始化

    几年前,我们大多数人习惯到处编写XML配置文件,甚至可以设置简单的Java EE应用程序. 如今,使用Java或Groovy来配置项目已成为一种首选方式–您只需要看一下Spring框架的其他版本中引入 ...

  2. 【Spring】DispatcherServlet的启动和初始化

    使用过SpringMVC的都知道DispatcherServlet,下面介绍下该Servlet的启动与初始化.作为Servlet,DispatcherServlet的启动与Serlvet的启动过程是相 ...

  3. Spring IoC(二)IoC容器的初始化过程

    (一)IoC 容器初始化过程概述 1.1简要概述初始化过程 IoC 容器的初始化过程是通过refresh() 方法来启动的,这个方法标识着IoC 容器正式启动.具体来说,这个启动过程包括:BeanDe ...

  4. 如何使用Spring初始化程序创建Spring Boot项目

    你好朋友, 如果您以前使用过Spring框架,则必须意识到,即使要开始使用基本的Spring功能也需要付出一些真正的努力.有了Spring Boot,最初的麻烦就消失了,您可以在数分钟内开始使用. 欢 ...

  5. 分析Spring容器启动流程 Spring初始化

    分析Spring容器启动流程 Spring初始化 每当启动Web容器时(例如Tomcat),会读取Web应用中的web.xml文件.以下这段代码就是启动Spring容器的关键代码. ContextLo ...

  6. Spring IoC容器初始化源码(1)—容器初始化入口以及setConfigLocations设置容器配置信息【一万字】

      基于最新Spring 5.x,对于基于XML的Spring IoC容器初始化过程中的setConfigLocations设置容器配置信息方法的源码进行了详细分析,最后给出了比较详细的方法调用时序图 ...

  7. 【Spring 5】响应式Web框架实战(下)

    - [Spring 5]响应式Web框架前瞻  - 响应式编程总览  - [Spring 5]响应式Web框架实战(上) 1 回顾 上篇介绍了如何使用Spring MVC注解实现一个响应式Web应用( ...

  8. Spring Boot(3) Web开发(1)静态资源处理

    Spring Boot(3) Web开发(1)静态资源处理 基于spring boot 2.4.3版本 1.静态资源访问 1.1 静态资源目录 把静态资源放在类路径下的以下目录:/static; /p ...

  9. Building a Restful Web Service(最好的Spring入门教程 --来自Spring官网的Guides)

    搭建一个Restful Web服务 本文档将引导你用Spring搭建一个"Hello,World!"Restful Web服务. 你要搭建的是什么? 你将搭建一个Web服务,这个服 ...

最新文章

  1. rails应用ajax之二:使用rails自身支持
  2. 鸡蛋该放在哪些篮子里?多少合适?
  3. POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解
  4. 国庆七天乐 Day5
  5. 既然选择了远方 便只顾风雨兼程
  6. 数据结构录 之 单调队列单调栈。
  7. japidocs怎么设置参数必填_JApiDocs 动态生成接口文档,并解析java 源码中的注释...
  8. 四、MyBatis-映射文件
  9. 蓝桥杯 ADV-144 算法提高 01背包
  10. Async和Await异步编程的原理
  11. 什么是Spring Data?
  12. Mybatis in查询List或数组 场景实例
  13. Volatile(理解)
  14. js 格式化输出_JS之 调试
  15. kettle下载windows共享文件夹到本地
  16. 电信网速怎么测试软件,电信网速测试在线(中国电信自助测速app)
  17. 解放生产力,VSCode使用小技巧
  18. vLive带你走进虚拟直播世界
  19. js 日期时间格式化,年月日时分秒
  20. Excel表格如何保存为网页形式

热门文章

  1. 对Web页面元素的绝对唯一引用方法
  2. Java与WCF交互(一):Java客户端调用WCF服务
  3. “cannot resolve symbol R” in Android Studio
  4. System Center 2012 R2 CM系列之安装Configuration Manager
  5. Shall的变量功能
  6. python3 ThreadPoolExecutor 线程池大小设置
  7. linux /etc/hosts.allow和/etc/hosts.deny 限制 禁止 ip连接 黑名单 白名单
  8. goland 设置project gopath
  9. winrar远程代码执行漏洞复现(cve-2018-20250)
  10. python3 网络编程 主机字节序 网络字节序 相互转换