Web.xml将会配置Spring的配置文件位置:
<servlet>
<servlet-name>x</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:x-servlet.xml</param-value>
</init-param>
</servlet>
这样就会到classes下面去找x-servlet.xml来进行配置。
x-servlet.xml里面包含了几个部分:
1. 静态资源,默认基于springmvc的工程是不允许访问静态资源,比如js,.jpge等,需要指定静态资源文件夹,这样,该文件夹下面的资源可以被访问:
<mvc:resources mapping="/resources/**" location="/resources/" />
2. 注解类进行自动加载,抛弃了之前的配置(applicationContext.xml),基于注解的模式把开发人员的体力释放出来了。在这些文件夹下面定义的@Controller, @Resource等注解将会被自动加载到Spring容器中进行管理。
<context:component-scan base-package="lorrywork.emall.domain"/>
3. 定义Bean,bean分为几类:
3.1 定义了JSP-Bean页面位置,从这个开始,就是定义bean了,bean分为几类
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
3.2 定义Jdbc-Bean,这里注意定义了context:property-placeholder,这个好处是只需要定义数据库信息在一个地方。比如对于servlet-init阶段,无法通过spring-mybatis,可能需要直接使用JDBC,这样只需要在properties中定义一次,既可以直接让JDBC访问,也可以让后续的mybatise从该配置文件中获取数据库信息,这样只需要定义一个地方即可。
<context:property-placeholder location="classpath:config.properties"/>
<bean id="jdbcDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${dburl}" />
<property name="username" value="${uid}" />
<property name="password" value="${pwd}" />
</bean>
3.3 mybatis
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="jdbcDataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath*:lorrywork/emall/dao/map/*/*.xml" />
</bean>
<!-- DAO类(Mapper类)接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="lorrywork.emall.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>