Spring的配置,主要包含web.xml,applicationContext.xml配置。
web.xml配置
對於web專案,容器(Tomcat,JBoss等)啟動時最先會掃描web.xml檔案,讀取該檔案中的配置資訊並初始化。
web.xml中,主要配置Listener,Filter(及filter-mapping),Servlet(及servlet-mapping),以及全域性引數(context-param)。容器首先會建立ServletContext上下文,用於這個WEB專案所有部分共享。
ServletContext application = ServletContextEvent.getServletContext();
context-param<值> = application.getInitParameter("context-param<鍵>");
內容的載入順序:<context-param> <listener> <filter> <servlet>。
如果採用Spring框架,則在web.xml中主要配置:
1)ContextLoaderListener。以及Spring配置檔案地址,用於該Listener的初始化(容器會建立ServletContext,contextInitialized)。(如果沒有指定配置檔案,則預設從/WEB-INF/下載入applicationContext.xml)。該Listener啟動Spring。
2)SpringMVC的分發器DispatcherServlet。在第一次請求時例項化,將請求分發給Spring的Controller處理。在Controller中,通過@RequestMapping註解,對映URL請求和Controller方法。
applicationContext.xml配置
1)引入屬性配置檔案。這些配置檔案配置的值,在bean例項化時可以通過{paramkey}方式使用。引入示例:
<bean id="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
2)配置component-scan,指明通過註解標識的Controller、Service以及Dao層的類路徑。通過註解標識的類(@Repository、@Service、@Controller、@Component),無需在配置檔案中配置bean,也可例項化。
<context:component-scan base-package="com.xxx">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
3)配置bean,包含資料庫的dataSource,sessionFactory等,以及自定義bean。一般配置第三方包中的bean,自定義的bean可以通過類註解實現。
4)AOP配置,包含定義事務規則;
5)其他還有websocket配置,dubbo配置,activemq配置,redis配置,schedule配置等。
SpringMVC配置
可以在web.xml中指定配置檔名稱,如:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
1)配置Model和View。在SpringMVC中通過Controller返回的資料會被包裝在ModelAndView這個類裡。此類中包含有返回的具體資料以及返回的資料指向的URL。
2)配置不需要通過Controller處理的資源。框架中,所有的請求都會通過Spring轉發器(Dispatcher)攔截,然後轉到Controller層處理,但是有些資原始檔的訪問(比如圖片、JS、CSS等檔案)不需要經過Controller處理,則可通過mvc:resources實現。如:
<mvc:resources mapping=”/assets/**” location=”/assets/” />
3)其他Spring配置。