分別getEnv()提供(給spring調用)、setEnv()獲取Environmenthtml
這裏輸入引用文本這裏輸入引用文本java
Environment的實現類之一StandardServletEnvironment 主要保存有 - ServletConfig - ServletContext - JNDI - 虛擬機屬性(java版本、操做系統、臨時目錄等) - 系統環境變量(JAVA_HOME、PATH) MutablePropertySources 保存 Environment 使用 CopyOnWriteArrayList 容器(https://www.cnblogs.com/dolphin0520/p/3938914.html),讀寫分離思想,也是多線程整塊替換思想
setApplicationContext(ApplicationContext) 設置contextweb
【設置ServletConfig】使用BeanWrapper 設置servletConfigProperty
到 this(DispatcherServlet)spring
將Servlet初始化參數設置到該組件上 //如contextAttribute、contextClass、namespace、contextConfigLocation;spring-mvc
不能使用set方法麼?多線程
<!-- MVC Servlet --> <servlet> <servlet-name>springServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/spring-mvc*.xml</param-value> </init-param> <!-- 是否將webApplicationContext設置到ServletContext <init-param> <param-name>publishContext</param-name> <param-value>false</param-value> </init-param> ServletContext 中要用做WebApplicationContext的屬性名稱。 <init-param> <param-name>contextAttribute</param-name> <param-value>xxx</param-value> </init-param> 當DispatcherServlet處理完一個請求後,是否須要向容器發佈一個ServletRequestHandledEvent事件,默認爲ture <init-param> <param-name>publishEvents</param-name> <param-value>false</param-value> </init-param> --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
onRefresh() -> initStrategies() 初始化各個組件mvc
初始化組件方法:從context中找相應的組件,找不到則使用默認組件(定義在DispatcherServlet.properties中)。app