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配置。