mvc:annotation-driven节点的解析器,是springmvc的核心解析器 官方注释 Open Declaration org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser A BeanDefinitionParser that provides the configuration for the <annotation-driven/> MVC namespace element.…
承接前文Spring源码情操陶冶#task:executor解析器,在前文基础上解析我们常用的spring中的定时任务的节点配置.备注:此文建立在spring的4.2.3.RELEASE版本 附例 Spring中的定时任务基本配置样例如下 <!--create schedule thread pool--> <task:scheduler id="baseScheduler" pool-size="5"></task:scheduler…
承接Spring源码情操陶冶-自定义节点的解析.本节关于事务进行简单的解析 spring配置文件样例 简单的事务配置,对save/delete开头的方法加事务,get/find开头的设置为不加事务只读模式 <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*"…
承接Spring源码情操陶冶-自定义节点的解析.线程池是jdk的一个很重要的概念,在很多的场景都会应用到,多用于处理多任务的并发处理,此处借由spring整合jdk的cocurrent包的方式来进行深入的分析 spring配置文件样例 配置简单线程池 <task:executor keep-alive="60" queue-capacity="20" pool-size="5" rejection-policy="DISCARD&…
简单分析springmvc是如何解析view视图,并返回页面给前端 SpringMVC配置视图解析器 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property key="prefix" value="/WEB-INF/jsp/"/> <pr…
本文对springmvc核心类DispatcherServlet作下简单的向导,方便博主与读者查阅 DispatcherServlet-继承关系 分析DispatcherServlet的继承关系以及主要简析其父类的相关方法,此处可查看 SpringMVC源码情操陶冶-DispatcherServlet父类简析 DispatcherServlet-初始化操作 简析默认的策略加载方式,此处可查看 SpringMVC源码情操陶冶-DispatcherServlet简析(一) DispatcherSer…
承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,本文将介绍如何注册HandlerMethod对象作为handler 类结构瞧一瞧 public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMapping implements InitializingBean{} 此为抽象方法,并实现了initializingBean接口,其实主要的注册操作则是通过afterPr…
承接前文SpringMVC源码情操陶冶-HandlerAdapter适配器简析.RequestMappingHandlerAdapter适配器组件是专门处理RequestMappingHandlerMapping返回的HandlerMethod对象,由此对象返回相应的视图对象或者直接返回数据给客户端 RequestMappingHandlerAdapter的xml配置应用 常用的针对handlerAdapter适配器的配置如下 <mvc:annotation-driven> <!--对直…
承接前文SpringMVC源码情操陶冶-DispatcherServlet类简析(一),主要讲述初始化的操作,本文将简单介绍springmvc如何处理请求 DispatcherServlet#doDispatch() DispatcherServlet复写父类的doService()方法,其中最主要的处理客户端发的请求便是doDispath()方法,我们只深究此方法,大致上看下其中的逻辑 注释瞧一发 /** * Process the actual dispatching to the hand…
前言:本文不讲解FreeMarkerView视图的相关配置,其配置基本由FreeMarkerViewResolver实现,具体可参考>>>SpringMVC源码情操陶冶-ViewResolver视图解析 FreeMarker与springmvc的结合 以xml的bean方式展示如下 <!-- 视图配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.vie…
阅读源码有利于陶冶情操,此文承接前文SpringMVC源码情操陶冶-DispatcherServlet父类简析 注意:springmvc初始化其他内容,其对应的配置文件已被加载至beanFactory中 DispatcherServlet#静态方法 DispatcherServlet静态块读取DispatcherServlet.properties,其中包含默认的策略实现 static { // Load default strategy implementations from propert…
springmvc中对业务的具体处理是通过HandlerAdapter适配器操作的 HandlerAdapter接口方法 列表如下 /** * Given a handler instance, return whether or not this {@code HandlerAdapter} * can support it. Typical HandlerAdapters will base the decision on the handler * type. HandlerAdapter…
承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,前文主要讲解了如何获取handler处理对象,本文将针对beanName注册为handler对象作下解析 AbstractUrlHandlerMapping#registerHandler()-注册handler对象 内部含有两个此方法的重载,分别作简单的介绍 AbstractUrlHandlerMapping#registerHandler(String[] urlPaths, String beanName…
阅读源码有助于陶冶情操,本文对springmvc作个简单的向导 springmvc-web.xml配置 <servlet> <servlet-name>dispatch</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--springmvc配置文件加载路径--> <init-para…
在上一篇博客springMVC源码分析--HandlerMethodReturnValueHandler返回值解析器(一)我们介绍了返回值解析器HandlerMethodReturnValueHandler,接触到了HandlerMethodReturnValueHandlerComposite,简单来说HandlerMethodReturnValueHandlerComposite其实就是springMVC提供的所有的HandlerMethodReturnValueHandler集合,它定义了…
本文承接前文Spring源码情操陶冶-自定义节点的解析,分析spring中的context:annotation-config节点如何被解析 源码概览 对BeanDefinitionParser接口的实现方法parse代码如下 @Override public BeanDefinition parse(Element element, ParserContext parserContext) { Object source = parserContext.extractSource(elemen…
本文针对spring配置的context:property-placeholder作下简单的分析,承接前文Spring源码情操陶冶-自定义节点的解析 spring配置文件应用 <context:property-placeholder location="classpath:context.properties"> PropertyPlaceholderBeanDefinitionParser-继承关系 配置文件解析类的继承关系如下 * AbstractBeanDefini…
承接Spring源码情操陶冶-自定义节点的解析.线程池是jdk的一个很重要的概念,在很多的场景都会应用到,多用于处理多任务的并发处理,此处借由spring整合jdk的cocurrent包的方式来进行深入的分析 spring配置文件样例 配置简单线程池 <task-executor keep-alive="60" queue-capacity="20" pool-size="5" rejection-policy="DISCARD&…
解析mvc:interceptors节点 观察下InterceptorsBeanDefinitionParser的源码备注 /** * {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that parses a * {@code interceptors} element to register a set of {@link MappedInterceptor} definitions. * * @autho…
解析mvc:resources节点,控制对静态资源的映射访问 查看官方注释 /** * {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that parses a * {@code resources} element to register a {@link ResourceHttpRequestHandler} and * register a {@link SimpleUrlHandlerMapping}…
springmvc支持服务端在处理业务逻辑过程中出现异常的时候可以配置相应的ModelAndView对象返回给客户端,本文介绍springmvc默认的几种HandlerExceptionResolver类 实际应用 springmvc的xml配置化-Exception配置 <bean id="exceptionHandler" class="org.springframework.web.servlet.handler.SimpleMappingExceptionRes…
分析下springmvc的HandlerMapping映射的抽象类 初始化操作 通过initApplicationContext()方法进行初始化,其一般是由父类执行ApplicationContextAware#setApplicationContext()方法间接调用,源码奉上 protected void initApplicationContext() throws BeansException { //供子类扩展添加拦截器,目前spring没有自行实现 extendIntercepto…
本节简单分析View视图对象的render方法 View接口 最重要的就是render()方法,具体源码如下 /** * Render the view given the specified model. * <p>The first step will be preparing the request: In the JSP case, * this would mean setting model objects as request attributes. * The second s…
HandlerMethodReturnValueHandler是用于对Controller中函数执行的返回值进行处理操作的,springMVC提供了多个HandlerMethodReturnValueHandler的实现类.…
本文承接前文Spring源码情操陶冶-DefaultBeanDefinitionDocumentReader#parseBeanDefinitions,特开辟出一块新地来啃啃这块有意思的骨头 自定义节点的类型 我们常用的可分为spring/springmvc两类 spring常用的节点类型 context类型 context-component-scan-扫描包内的所有class类并注册为beanDefinition到spring上下文 context-property-placeholder-…
承接前文Spring源码情操陶冶#task:scheduled-tasks解析器,本文在前文的基础上讲解单核心线程线程池的工作原理 应用附例 承接前文的例子,如下 <!--define bean for schedule task--> <bean id="taskBean" class="com.jing.test.spring.task.TaskBean"></bean> <task:scheduled-tasks>…
aop-Aspect Oriented Programming,面向切面编程.根据百度百科的解释,其通过预编译方式和运行期动态代理实现程序功能的一种技术.主要目的是为了程序间的解耦,常用于日志记录.事务管理等方面. spring中常用<aop-config>来配置aop代理 AOP概念梳理 切面(Aspect) 连接点(Joinpoint) 通知(Advice) 切入点(PointCut) 目标对象 AOP代理 具体的AOP解释以及用法可详情参考专业人士写的博客>>>Spri…
承接前文Spring源码情操陶冶-自定义节点的解析,本文讲述spring通过context:component-scan节点干了什么事 ComponentScanBeanDefinitionParser#私有属性 罗列下context:component-scan可填的基础属性 private static final String BASE_PACKAGE_ATTRIBUTE = "base-package"; private static final String RESOURCE…
阅读本文请先稍微浏览下上篇文章Spring源码情操陶冶-AOP之ConfigBeanDefinitionParser解析器,本文则对aop模式的通知类作简单的分析 入口 根据前文讲解,我们知道通知类的解析主要建立在aop:aspect节点的解析上.废话少说我们直接观察ConfigBeanDefinitionParser#parseAdvice()方法 ConfigBeanDefinitionParser#parseAdvice()-解析通知类并注册到bean工厂 先奉上源码 /** * Pars…
承接前文Spring源码情操陶冶-AbstractApplicationContext#registerListeners 约定web.xml配置的contextClass为默认值XmlWebApplicationContext 直接源码AbstractRefreshableWebApplicationContext#finishBeanFactoryInitialization /** * Finish the initialization of this context's bean fac…