采得百花成蜜后,为谁辛苦为谁甜。这篇文章主要讲述SpringMVC 常用applicationContext.xmlweb.xmlservlet-mvc.xml简单配置相关的知识,希望能为你提供帮助。
在进行学习配置文件之前,为了加深对框架的认识,简单的做了SSM框架
的简单实验。然后画出listAll
查询方法的整个过程的思维导图。
文章图片
整个过程中的
web.xml、SpringMVC.xml、applicationContext.xml
配置文件起到关键作用,同时也是为了加深理解,在此做下记录,请看下面! github源码链接:https://github.com/Jian0110/ssm
一、SpringMVC的web.xml配置关于SpringMVC 的web.xml详细介绍,我之前已经做过了介绍并记录,请看Spring MVC的web.xml配置详解1.思维导图:
文章图片
2.详细描述:(1)
servlet
配置(即SpringMVC核心分发器Dispatcher):dispatcher
配置与servlet-mvc.xml
配置 若没有< init-param>
初始化servlet-mvc.xml
,那么就会自动寻找servletname-servlet.xml
并加载!
<
servlet>
<
servlet-name>
mvc-dispatcher<
/servlet-name>
<
servlet-class>
org.springframework.web.servlet.DispatcherServlet<
/servlet-class>
<
!-- spring mvc的配置文件:springMVC.xml -->
<
init-param>
<
param-name>
contextConfigLocation<
/param-name>
<
param-value>
classpath:springMVC.xml<
/param-value>
<
/init-param>
<
load-on-startup>
1<
/load-on-startup>
<
/servlet>
dispatcherer
拦截路径配置:
<
servlet-mapping>
<
servlet-name>
mvc-dispatcher<
/servlet-name>
<
url-pattern>
/<
/url-pattern>
<
/servlet-mapping>
(2)
applicationContext.xml
的自动装配:ContextLoaderListener
的作用就是启动Web容器时,自动装配ApplicationContext.xml
的配置信息。<
context-param>
<
param-name>
contextConfigLocation<
/param-name>
<
param-value>
classpath:applicationContext.xml<
/param-value>
<
/context-param>
<
listener>
<
listener-class>
org.springframework.web.context.ContextLoaderListener<
/listener-class>
<
/listener>
二、SpringMVC的servlet-mvc.xml配置
servlet-mvc.xml
配置文件主要是用来扫描@Controller
注解并注入,还有视图解析转向等。1.思维导图
文章图片
2.详细描述:(1)
annotation-config
与component-scan
:- 在
servlte-mvc.xml
扫描注入bean的时候只需要找到@Controller
注解,同时注入bean
,其他的bean
的注入是依靠applicationContext.xml
进行的。 - 关于扫描包
component-scan
的详细介绍可以看SpringMVC扫描包使用
<
!-- 1. 扫描Controller,并将其生命周期纳入Spring管理(这里只扫描@Controller) -->
<
!--<
context:annotation-config/>
-->
<
context:component-scan base-package="com.test.controller">
<
context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<
/context:component-scan>
annotation-config
:对已被注册到Spring容器里的Bean进行操作(比如注入到某个类的内部),主要的作用是为了能够识别相应的注解(@Autowired、@Required、@Resource、@ PostConstruct、@ PreDestroy
等)。component-scan
:不仅具有annotation-config
的功能,还可以扫描指定包下的类,将拥有注解的它们注册到Spring容器中中。
annotation-driven
注解驱动:SpringMVC
就知道了我们启用注解驱动。然后通过context:component-scan
标签的配置,会自动为我们将扫描到的@Component,@Controller,@Service,@Repository
等注解标记的组件注册到工厂中,来处理我们的请求。<
!-- 注解驱动,以使得访问路径与方法的匹配可以通过注解配置 -->
<
mvc:annotation-driven />
(3)
default-servlet-handler
静态资源:由于在
web.xml
中的的<
/servlet-mapping>
拦截了所有的url请求,那么如果请求中使用到静态资源的话,则无法加载像js,css,jgp这样格式的资源。<
mvc:default-servlet-handler />
就是解决这个问题的,具体请看这位博主写的,解释很清晰mvc:default-servlet-handler标签的的作用 <
!-- 3. 静态页面,如html,css,js,images可以访问 -->
<
mvc:default-servlet-handler />
(4)
InternalResourceViewResolver
视图解析器:在
Controller
层视图跳转mav.setViewName("listAll");
中,只需要输入listAll.jsp
文件前缀listAll
即可跳转。<
!-- 4. 视图定位到/WEB/INF/jsp 这个目录下 -->
<
bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<
property name="viewClass"
value="https://www.songbingjia.com/android/org.springframework.web.servlet.view.JstlView" />
<
property name="prefix" value="https://www.songbingjia.com/WEB-INF/jsp/" />
<
property name="suffix" value="https://www.songbingjia.com/android/.jsp" />
<
/bean>
三、SpringMVC的applicationContext.xml配置 1.思维导图:
文章图片
2.详细描述:(1)
component-scan
自动扫描:这里的
component-scan
不同servlet-mvc.xml
中的component-scan
,它不光只扫描@Controller
,扫描包com.test
的所有都会被注入。<
context:component-scan base-package="com.test" />
(2)
dataSource
数据库配置:在此之前,通常还需要引入
db.properties
数据库配置文件,才能使用EL
表达式。<
bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<
property name="locations">
<
value>
classpath*:bd.properties<
/value>
<
/property>
<
/bean>
数据库简单配置如下:
<
bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<
!-- 数据库连接基本信息 -->
<
property name="driverClassName" value="https://www.songbingjia.com/android/${driver}" />
<
property name="url" value="https://www.songbingjia.com/android/${url}?useUnicode=true&
amp;
characterEncoding=utf8&
amp;" />
<
property name="username" value="https://www.songbingjia.com/android/${username}" />
<
property name="password" value="https://www.songbingjia.com/android/${password}" />
<
!-- 数据连接池基本信息 -->
<
property name="maxActive" value="https://www.songbingjia.com/android/${maxActive}" />
<
property name="maxIdle" value="https://www.songbingjia.com/android/${maxIdle}" />
<
property name="defaultAutoCommit" value="https://www.songbingjia.com/android/false" />
<
property name="timeBetweenEvictionRunsMillis" value="https://www.songbingjia.com/android/3600000"/>
<
property name="minEvictableIdleTimeMillis" value="https://www.songbingjia.com/android/3600000"/>
<
/bean>
(3)扫描
mybatis.xml
文件:<
!-- 3. 扫描存放SQL语句的Category.xml -->
<
bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<
property name="typeAliasesPackage" value="https://www.songbingjia.com/android/com.test.pojo" />
<
property name="dataSource" ref="dataSource"/>
<
property name="mapperLocations" value="https://www.songbingjia.com/android/classpath:com/test/mapper/*.xml"/>
<
/bean>
(4)配置
Mapper
接口
:Mybatis MapperScannerConfigurer
自动扫描 将Mapper
接口生成代理注入到Spring。
详情请看文章MapperScannerConfigurer自动扫描 将Mapper接口生成代理注入到Spring<
!-- 4. 扫描Mapper,并将其生命周期纳入Spring的管理 (配置Mapper接口)-->
<
bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<
property name="basePackage" value="https://www.songbingjia.com/android/com.test.mapper"/>
<
/bean>
【SpringMVC 常用applicationContext.xmlweb.xmlservlet-mvc.xml简单配置】
MapperScannerConfigurer
将会创建MapperFactoryBean
,之后自动装配。MapperFactoryBean
创建的代理类实现了 XXXMapper
接口,并且注入到应用程序中。这个bean
就可以直接在应用程序中使用,比如: public class UserServiceImpl implements UserService {//直接使用userMapper
private UserMapper userMapper;
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}public User getUser(String userId) {
return this.userMapper.getUser(userId);
}
}
(5)
TransactionManager
事务管理:<
bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<
property name="dataSource" ref="dataSource">
<
/property>
<
/bean>
<
tx:annotation-driven transaction-manager="txManager"/>
这样就可以在在
Service
实现类中增加@Transactional
注解即可控制事务。推荐阅读
- 安卓创始人计划推出能帮你约会的AI手机
- 决策树遇到sklearn.exceptions.NotFittedError: XXX instance is not fitted yet. Call 'fit' with appr
- Android行驶证识别
- 标签@RequestMapping和@GetMapping@PostMapping的区别
- 广州易利购APP开发
- 安卓布局
- AndroidStudio项目制作SDK和打包成jar
- append 注意事项
- ipad安卓协议源码最新