Spring上下文配置

请先了解Spring的两个上下文
两个上下文的配置方法都一样,这里以DispatcherServlet为例

默认按名字找DispatcherServlet配置文件

程序清单7.3:
在这里插入图片描述
ContextLoaderListener和DispatcherServlet各自都会加载一个Spring应用上下文。
上下文参数contextConfigLocation就是用来指定要被加载的XML文件的地址

这个文件定义了根应用上下文,它会被ContextLoaderListener加载。
如程序清单7.3所示,根上下文读取的是第一个contextConfigLocation,也就是“WEB-INF/spring/root-context.xml”中加bean定义。

DispatcherServlet会根据Servlet的名字找到一个文件,并基于该文件加载应用上下文。
在程序清单7.3中,Servlet的名字是appServlet,因此DispatcherServlet会从“WEB-INF/appServlet-context.xml”文件中加载其应用上下文。

指定DispatcherServlet配置文件

如果你希望DispatcherServlet不通过名字自动读取配置文件,而是自己定配置文件的位置的话,那么可以在Servlet上指定一个contextConfigLocation初始化参数

例如,如下的配中,DispatcherServlet会从“WEB-INF/spring/appServlet/servlet-context.xml”加载它的bean:
在这里插入图片描述

使用基于Java的配置

要在Spring MVC中使用基于Java的配置,也就是让SpringMVC在启动的时候,从带有@Configuration注解的类上加载配置。

我们需要告诉Spring,我们打算使用Java来配置DispatcherServlet,那么怎么告诉它呢?
通过XML配置,这个XML配置是用来告诉Spring:我要写一个Java类,这个类用来配置DispatcherServlet
自然,其他和DispatcherServlet无关的配置当然就不写在Java中,这个”告诉“就是无关的

这里的XML是一种整体的配置,这里的Java配置是对DispatcherServlet的配置,我们要在整体配置中写一些东西让DispatcherServlet的配置方式变为Java配置

既然要用XML,那么XML写什么呢?使用参数:contextClass,这个参数的作用是指定你要用的配置类型
(其实就是指定WebApplicationContext的实现类,为什么WebApplicationContext接口的实现类能指定要用的配置类型

我们将contextClass这个参数的值设为AnnotationConfigWebApplicationContext,就可以了
这个值这是一个WebApplicationContext的实现类,由于他写在对DispatcherServlet的配置进行配置的contextClass,所以它会使告诉Spring的配置DispatcherServlet的方式为通过Java配置类来配置

总的来说,我们只要配置两个东西:

  1. contextClass参数的值是AnnotationConfigWebApplicationContext,它说明了我们使用的是Java来配置DispatcherServlet

  2. contextConfigLocation指定了用于配置DispatcherServlet的Java配置类

配置Java配置的XML例子

如下的程序清单展现了一个新的web.xml,在这个文件中,它所搭建的Spring MVC使用基于Java的Spring配置:
在这里插入图片描述在这里插入图片描述上面两个箭头是ContextLoaderListener的上下文相关
下面两个箭头是DispatcherServelet的上下文相关

上面第一个箭头和下面第一个箭头,指向的属性contexClass使用AnnotationConfigWebApplicationContext意味着两个上下文都使用JAVA的@Configuration配置

上面第二个指向属性contextConfigLocation意味着我们对ContextLoaderListener具体使用的Java配置类是RootConfig

下面第二个箭头指向属性contextConfigLocation意味着我们对DispatcherServelet具体使用的Java配置类是WebConfigConfig

RootConfigWebConfigConfig都是自己写的Java配置类)

发布了81 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43553694/article/details/105002634
今日推荐