首页 > 编程知识 正文

spring文件上传,spring配置文件有哪些

时间:2023-05-05 14:33:27 阅读:16087 作者:2797

Spring最基本的功能是创建对象,管理这些对象之间的依赖关系,实现低耦合、高凝聚。 它还提供了通用日志记录、性能统计信息、安全控制和异常处理等面向切片的功能,有助于管理最头疼的数据库事务。 它还提供了简单的JDBC访问实现,包括与第三方数据访问框架(如Java Mail、Hibernate和JPA )的集成,以及与各种Java EE技术(如Java Mail )的集成不仅提供自己的功能,还提供粘接其他技术和框架的能力,被认为可以更自由地选择使用哪个技术进行开发。 此外,无论是Javase(c/s体系结构) APP应用程序还是Javase(c/s体系结构) APP应用程序,都可以使用该平台进行开发。

Spring的启动过程实际上是IOC容器的启动过程,对于WEB程序,IOC容器的启动过程是建立上下文的过程。

让我们先看看web.xml的配置。

mvc-dispatcher

org.spring框架. web.servlet.dispatcher servlet

1

mvc-dispatcher

/

上下文配置

/we B- INF/MVC -分布器- servlet.XML

org.spring framework.web.context.contextloaderlistener

============分析===========================

上下文配置

/we B- INF/MVC -分布器- servlet.XML

org.spring framework.web.context.contextloaderlistener

这将加载Spring配置文件并初始化上下文。 ContextLoaderListener是实现ServletContextListener接口的监听程序,它在项目启动时调用contextInitialized方法。 此方法主要完成应用程序上下文对象的创建

启动项目时启动contextInitialized方法,可以通过父类contextLoader的initWebApplicationContext方法创建Spring上下文对象。

initWebApplicationContext方法做了三件事:创建WebApplicationContext。 通过加载相应的Spring文件创建Bean实例; 将WebApplicationContext放在servlet上下文(即Java Web全局变量)中。

createWebApplicationContext创建支持用户定义的上下文对象的上下文对象,但必须从configurablewebapplicationcontext继承。 缺省情况下,Spring MVC使用configurablewebapplication context

configureandrefreshwebapplicationcontext方法用于封装应用程序上下文数据并初始化所有相关Bean对象。 从web.xml读取名为contextConfigLocation的设置。 这就是spring xml数据源设置,位于应用程序上下文中,最后调用传说中的refresh方法来执行所有Java对象的创建。

创建应用上下文后,请将其放入ServletContext中,并注意保存的key值常量。

mvc-dispatcher

org.spring框架. web.servlet.dispatcher servlet

1

mvc-dispatcher

/

为了启动此初始化的dispatcher servlet,web.xml中设置了servlet加载启动。 这表示在容器启动时初始化servlet。

URL-pattern:「/”表示传递给Spring Web MVC的请求,该请求用于定义默认servlet映射。 也可以阻止以html为扩展名的所有请求,例如“*.html”。

dispatcher servlet默认使用webapplication context (上下文初始化生成)作为上下文,Spring的默认配置文件为“/web-INF/[

分散式

rvlet也可以配置自己的初始化参数,覆盖默认配置,因此我们可以通过添加初始化参数

chapter2

org.springframework.web.servlet.DispatcherServlet

1

contextConfigLocation

classpath:spring-servlet-config.xml

如果使用如上配置,Spring Web MVC框架将加载“classpath:spring-servlet-config.xml”来进行初始化上下文而不是“/WEB-INF/[servlet名字]-servlet.xml”

DispatcherServlet初始化顺序:

(1)HttpServletBean继承HttpServlet,因此在Web容器启动时将调用它的init方法,该初始化方法的主要作用:将Servlet初始化参数(init-param)设置到该组件上(如contextAttribute、contextClass、namespace、contextConfigLocation),通过BeanWrapper简化设值过程,方便后续使用;提供给子类初始化扩展点,initServletBean(),该方法由FrameworkServlet覆盖。

(2)FrameworkServlet继承HttpServletBean,通过initServletBean()进行Web上下文初始化,该方法主要覆盖一下两件事情:初始化web上下文;提供给子类初始化扩展点。

(3)DispatcherServlet继承FrameworkServlet,并实现了onRefresh()方法提供一些前端控制器相关的配置。

整个DispatcherServlet初始化的过程和做了些什么事情,具体主要做了如下两件事情:

1、初始化Spring Web MVC使用的Web上下文,并且指定父容器为WebApplicationContext(ContextLoaderListener加载了的根上下文);

2、初始化DispatcherServlet使用的策略,如HandlerMapping、HandlerAdapter等。

So 总体概括spring的启动过程:

1.首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;

2.其 次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时 contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始 化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是 XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的 context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取;

3.再 次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这里是DispatcherServlet,这个servlet实际上是一个标准的前端控制器,用以转发、匹配、处理每个servlet请 求。DispatcherServlet上下文在初始化的时候会建立自己的IoC上下文,用以持有spring mvc相关的bean。在建立DispatcherServlet自己的IoC上下文时,会利用WebApplicationContext.ROOTWEBAPPLICATIONCONTEXTATTRIBUTE 先从ServletContext中获取之前的根上下文(即WebApplicationContext)作为自己上下文的parent上下文。有了这个 parent上下文之后,再初始化自己持有的上下文。这个DispatcherServlet初始化自己上下文的工作在其initStrategies方 法中可以看到,大概的工作就是初始化处理器映射、视图解析等。这个servlet自己持有的上下文默认实现类也是 mlWebApplicationContext。初始化完毕后,spring以与servlet的名字相关(此处不是简单的以servlet名为 Key,而是通过一些转换,具体可自行查看源码)的属性为属性Key,也将其存到ServletContext中,以便后续使用。这样每个servlet 就持有自己的上下文,即拥有自己独立的bean空间,同时各个servlet共享相同的bean,即根上下文(第2步中初始化的上下文)定义的那些 bean。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。