![](https://img-blog.csdnimg.cn/20190830162808626.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Web
文章平均质量分 63
木叶之荣
这个作者很懒,什么都没留下…
展开
-
SpringMVC之RequestMappingHandlerMapping(三)
我们在这篇文章中接着上一篇文章的内容接着说,我们在上一篇文章中说到在doWithMethods这个方法中会调用MethodCallback的doWith方法进行方法处理,那么我们在RequestMappingHandlerMapping中MethodCallback的实现是什么呢? ReflectionUtils.doWithMethods(currentHandlerType, /...原创 2019-09-04 01:31:25 · 1396 阅读 · 0 评论 -
SpringMVC之自动注入Request对象
前几天看了领导写的一段代码,在Controller中注入了HttpServletRequest,形式如下所示:@RestControllerpublic class AutowiredRequestController { @Autowired private HttpServletRequest request;}当时看到了这一段代码,首先想到的是AutowiredRe原创 2017-09-10 00:07:33 · 22616 阅读 · 12 评论 -
Spring Bean的生命周期小析(二)
在上一篇文章中我们说了BeanFactory中Bean的生命周期(点击这里查看),在这一篇文章中我们说一下ApplicationContex中Bean的生命周期。ApplicationContext中Bean的生命周期和在BeanFactory中的生命周期大致相同,不同的是多了一个BeanFactoryPostProcessor的接口和ApplicationContextAware接口(这个接口会原创 2017-05-21 18:39:52 · 1226 阅读 · 0 评论 -
SpringMVC之分析AnnotationDrivenBeanDefinitionParser(三)
我们在之前的文章中对这篇文章中AnnotationDrivenBeanDefinitionParser的parse方法进行了一些分析,我们在这篇文章中接着分析AnnotationDrivenBeanDefinitionParser的parse方法的内容。ManagedList messageConverters = getMessageConverters(element, source, p原创 2017-11-03 22:18:29 · 699 阅读 · 0 评论 -
SpringMVC之分析AnnotationDrivenBeanDefinitionParser(一)
首先我们会想一下,我们在进行SpringMVC配置的时候是怎样配置的(不是web.xml)?我们会在SpringMVC的配置文件中添加这样的一些东西:xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/m原创 2017-10-28 17:16:00 · 2772 阅读 · 2 评论 -
SpringMVC之全注解方式进行web开发
在我们之前进行web开发的时候,通常都会有一个web.xml存在,我们会在web.xml里面配置Servlet、Filter等一些web开发相关的东西。但是由于Servlet3.0的规范和Spring3.1功能的增强,现在我们在进行web开发的时候可以不用再使用web.xml了,转而全部使用java注解就可以了。下面是一个例子:首先我们先创建一个StrartWebApplicationInit原创 2017-10-29 22:40:32 · 3532 阅读 · 0 评论 -
SpringMVC之分析HandlerMethodArgumentResolver请求对应处理器方法参数的解析过程(二)
在上一篇文章中我们分析了SpringMVC对简单对象和@RequestParam注解的解析过程,这一章中我们继续分析其他形式的参数解析过程。ServletRequestMethodArgumentResolver下面来看一下我们的第一个请求:http://localhost:8086/allRequestFormat/requestAndResponseRequest?userName=z原创 2017-10-17 21:38:03 · 3712 阅读 · 0 评论 -
SpringMVC之分析HandlerMethodArgumentResolver请求对应处理器方法参数的解析过程(一)
在我们做Web开发的时候,会提交各种数据格式的请求,而我们的后台也会有相应的参数处理方式。SpringMVC就为我们提供了一系列的参数解析器,不管你是要获取Cookie中的值,Header中的值,JSON格式的数据,URI中的值。下面我们分析几个SpringMVC为我们提供的参数解析器。在SpringMVC中为我们定义了一个参数解析的顶级父类:HandlerMethodArgumentReso原创 2017-10-15 13:12:10 · 7866 阅读 · 3 评论 -
SpringMVC之分析RequestMappingHandlerAdapter(二)
接上篇文章,我们在这一篇文章中继续对RequestMappingHandlerAdapter这个类进行分析。在上篇文章中我们说到afterPropertiesSet这个方法中添加的一些MethodHandlerResolver,我们继续分析这个方法中的其他代码: if (this.initBinderArgumentResolvers == null) { List resolvers原创 2017-10-28 16:33:47 · 2099 阅读 · 0 评论 -
SpringBoot之开启Profile
我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不一样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。但是Spring中为我们提供了Profile这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的Profile就可以了。下面举个例子来说明一下:首先我们先创建一个bean,用来测试是不是从不同的配置文件中取的值。代码如下(省略get原创 2017-09-09 19:03:49 · 26065 阅读 · 1 评论 -
自定义简陋版SpringMVC
这几天在家写了一个简陋版的SpringMVC,先把代码贴出来,有兴趣的同学可以看一下。首先定义了一个简陋的服务器,其实也就是用了ServerSocket写了一个服务端(更详细的点看这里:创建一个简单的web服务器):public class HttpServer { public static void main(String[] args) { await()原创 2017-08-12 19:08:43 · 845 阅读 · 2 评论 -
Spring学习之资源管理器(Resource)
今天开始Spring学习(希望发展的是Spring的源码学习的系列)的第一章。我们在用Spring做开发的时候,总免不了读取各种各样的资源文件,比如说Spring的xml配置文件、属性的配置文件properties文件等。这些资源文件可能在classPath下面、web容器的上下文中、网络上等等。虽然JDK将不同来源的资源抽象成URL,通过注册不同的handler(URLStreamHandler原创 2017-05-18 13:33:58 · 2647 阅读 · 0 评论 -
小程序来测试加载的是哪个jar中的类
在我们日常开发中可能经常会遇到jar冲突的问题,特别是在使用Maven进行项目管理的时候。在这里参考别人的文章写了一个用来测试class是从哪个jar中加载的demo(参考自:http://stamen.iteye.com/blog/2314940)。demo如下:package com.zkn.spring.miscellaneous.controller;import java.io.原创 2017-05-20 20:06:27 · 673 阅读 · 0 评论 -
Spring AOP中自我调用的问题
前几天在做项目的时候同事说,在使用AOP进行拦截的时候发现有些方法有时候能输出拦截的日志有时候不输出拦截的日志。发现在单独调用这些方法的时候是有日志输出,在被同一个类中的方法调用的时候没有日志输出。我记得之前看过一篇文章是讲Spring事务自我调用不起作用的问题,应该是同样的问题(如果要观看那篇文章请点击这里http://jinnianshilongnian.iteye.com/blog/1487...原创 2017-05-21 00:20:52 · 5629 阅读 · 1 评论 -
Spring Bean的生命周期小析(一)
在上一篇(点击这里观看上一篇)中我们用的BeanPostProcessor、@PostConstruct、InitializingBean等都属于Spring Bean生命周期的内容。在这篇文章中我们简单的说一下Bean的生命周期有关的内容。在Spring中,我们可以从两个层面定义Bean的生命周期:第一个层面是Bean的作用范围(Singleton、Prototype以及Web中的Request原创 2017-05-21 12:02:15 · 2907 阅读 · 1 评论 -
SpringMVC请求大致处理流程
我们都在使用SpringMVC,那么SpringMVC处理一个请求的大致流程是怎样的呢?请看下面图所示:文字描述的话大致是这样的一个流程:用户首先发送请求到前端控制器(DispatcherServlet),在doDispatch这个方法中会为请求找到对应的HandlerMapping(处理器映射),然后将这个HandlerMapping映射成HandlerExecutionChai原创 2017-05-21 23:50:09 · 7237 阅读 · 1 评论 -
SpringMVC之浅析组件初始化过程
在上篇的文章中简单的说了一下SpringMVC请求大致处理的过程(点这里查看),说了一下SpringMVC为我们提供好的一些相关的组件。在这篇文章中我们接着看一下SpringMVC初始化这些组件的过程。SpringMVC默认组件在spring-webmvc.jar的中有一个org/springframework/web/servlet/DispatcherServlet.propertie原创 2017-06-02 23:29:47 · 2063 阅读 · 0 评论 -
SpringMVC之浅析上下文初始化(二)
在上一篇文章中(点这里查看)我们说了ContextLoaderListener初始化Web上下文的过程,这篇文章中我们说一下DispatcherServlet初始化上下文的过程。原创 2017-07-01 23:42:25 · 1870 阅读 · 0 评论 -
SpringMVC之浅析上下文初始化(一)
说明:本文所用的SpringMVC版本为4.3.4.RELEASE,应用服务器为TomCat8.0.33。下面我们先回顾一下我们在用SpringMVC进行开发时在web.xml中进行的一些配置: contextConfigLocation classpath:applicationContext.xml原创 2017-06-11 21:08:40 · 3643 阅读 · 0 评论 -
SpringMVC之分析HandlerMethodReturnValueHandler(一)
我们在用SpringMVC做web开发的时候,有时候处理完一个请求之后会返回一个页面,有时候会返回一个字符串,有时候会返回一个json对象。通过分析源码我们知道在调用请求处理器映射方法的时候走的是同一段代码,如下:org.springframework.web.method.support.InvocableHandlerMethod#doInvoke protected Object原创 2017-11-07 21:46:47 · 2390 阅读 · 0 评论 -
使用Servlet3.0新特性进行web开发小demo
在上一篇文章中我们使用了SpringMVC结合Servlet3.0的新特性进行web开发。在这一篇文章中我们用最原始的Servlet的方式来进行一个简单的web开发的工作。在我们之前的web开发中我们会在web.xml中进行Servlet、Filter、初始化参数等信息的配置。在Servlet3.0中为我们提供了一个接口:javax.servlet.ServletContainerInitiali原创 2017-10-30 22:36:27 · 3031 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(五)
在上一篇文章的结尾处我们简单的说了一下PropertiesConfigurationFactory中的bindPropertiesToTarget这个方法的内容,在这个方法中有这样的一段代码: //获取PropertyValues 重点要分析的PropertyValues propertyValues = getPropertySourcesPropertyValues(names,relaxed原创 2018-01-15 22:25:20 · 1811 阅读 · 0 评论 -
Linux环境下安装dubbo-admin
注意:本文采用的Linux版本为CentOs6.5。准备工作在安装dubbo-admin之前,我们需要的准备工作是你的Linux已经安装了jdk和Zookeeper。具体的安装步骤请参看这两篇文章Linux环境下系统安装JDK和Linux环境下安装Zookeeper。另外我们还需要准备一份tomcat的安装包和dubbo-admin的war包。你可以在这里下载到他们dubbo-admin和...原创 2016-09-21 23:55:46 · 12642 阅读 · 20 评论 -
SpringBoot之浅析TomCat端口号设置
我们在之前的文章中说过怎么去修改TomCat的端口号(SpringBoot修改默认端口号),我们在这篇文章中简单的说一下SpringBoot是怎么实现修改TomCat端口号的。 修改TomCat的端口号大概可以分为这样的两类吧,一种是用配置项的方式,另一种是用程序实现的方式。配置项包含:设置命令行参数、系统参数、虚拟机参数、SpringBoot默认的application.properties(原创 2018-01-16 23:54:08 · 21885 阅读 · 4 评论 -
SpringBoot之浅析配置项解析(一)
在我们的开发工作总是离不了配置项相关的配置工作,SpringBoot也为我们提供了@ConfigurationProperties注解来进行配置项信息的配置工作,同时也提供了几个配置文件的默认加载位置,如:classpath:application.properties、classpath:application.yml、classpath:application.yaml、classpath:/原创 2018-01-07 15:39:22 · 3452 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(二)
我们在上一篇文章中简单的说了一些SpringBoot配置属性相关的一些内容,我们在这篇文章中接着上一篇的文章继续进行分析。我们在上一篇文章中提到了这样一个类:ConfigFileApplicationListener,从类名来看的话这是一个配置文件应用监听器,这个类主要的一个作用是在 refresh context之前解析默认的配置文件。首先我们来看一下它的UML类图: ConfigFile原创 2018-01-08 22:11:55 · 939 阅读 · 0 评论 -
SpringBoot之@EnableConfigurationProperties分析
我们在用SpringBoot进行项目开发的时候,基本上都使用过@ConfigurationProperties这个注解,我们在之前的文章中也说过ConfigurationPropertiesBindingPostProcessor会对标注@ConfigurationProperties注解的Bean进行属性值的配置,但是我们之前没有说ConfigurationPropertiesBindingPo原创 2018-01-28 00:43:39 · 119330 阅读 · 20 评论 -
SpringMVC之RequestMappingHandlerMapping(一)开篇
这一段时间工作比较忙,自己也变得懒惰了一些,回头看看博客已经有半年多没有更新了。还是要让自己保持一颗不断学习的心的,就以SpringMVC的RequestMappingHandlerMapping的分析作为新的开始吧,本文所用的SpringMVC版本为5.1.5。我们在学习SpringMVC的时候,RequestMappingHandlerMapping和RequestMappingHandler...原创 2019-07-24 01:04:26 · 2629 阅读 · 0 评论 -
SpringMVC之RequestMappingHandlerMapping(二)
我们在上篇文章中大致说了一些和RequestMappingHandlerMapping相关的类,我们在这篇文章中重点分析下RequestMappingHandlerMapping这个类。从上篇的文章中我们看到,RequestMappingHandlerMapping这个类实现了和Bean的生命周期相关的一些接口(关于Bean的生命周期可以参考之前写的小文章:Spring Bean的生命周期小析(一...原创 2019-08-30 01:36:03 · 1452 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(四)
我们在之前的文章中简单的说了一下SpringBoot对于默认的配置文件的解析过程,在这一篇文章中我们再简单的分析一下SpringBoot是怎么将解析到的配置属性信息设置到相应的Bean上的。既然是用SpringBoot的属性配置方式,那么我们在这里会在对应的类上加上ConfigurationProperties和Component(或是和Component相同功能的)注解。我们定义的Bean如下:@原创 2018-01-14 19:19:07 · 2517 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(三)
我们接着上一篇的文章继续分析。我们来看这一段代码://在上一篇文章中我们分析了getSearchNames()这个方法,这个方法默认返回 只有一个元素 application的List for (String name : getSearchNames()) { //我们分析的重点 profile 为null load(location, name, profile);原创 2018-01-10 22:10:52 · 2804 阅读 · 0 评论 -
SpringMVC之分析AnnotationDrivenBeanDefinitionParser(二)
在上一篇文章中我们简单的分析了一下AnnotationDrivenBeanDefinitionParser,在这一篇的文章中我们继续分析AnnotationDrivenBeanDefinitionParser的内容。AnnotationDrivenBeanDefinitionParser这个类最最重要的一个方法就是parse方法。在这篇文章中我们简单的分析一下parse方法的内容。先看parse中原创 2017-10-31 22:11:55 · 757 阅读 · 0 评论 -
SpringMVC之分析RequestMappingHandlerAdapter(一)
RequestMappingHandlerAdapter请求映射处理适配器,在SpringMVC中它是一个非常重要的类,对请求处理方法的调用主要是通过这个类来完成的(这段代码mv = ha.handle(processedRequest, response, mappedHandler.getHandler());)。下面我们就简单的分析一下这个类。首先我们先看一下它的UML类图结构:原创 2017-10-24 23:27:10 · 16766 阅读 · 0 评论 -
SpringBoot特性之Actuator
SpringBoot自动配置的特性,很大程度上解放了我们繁琐的配置的工作,但是也向我们屏蔽了很多内部运行 的细节,好在SpringBoot为我们提供了Actuator,Actuator在应用程序里提供了众多的Web端点,通过它 们,我们可以了解应用程序运行时的内部状况。我们可以了解Bean的组装信息,获取环境配置信息,等等 Actuator为我们提供了如下的一些端口 HTTP方法原创 2017-11-19 20:48:21 · 1203 阅读 · 0 评论 -
SpringBoot源码分析之CommandLineRunner、ApplicationRunner
我们在之前的文章中简单的说过SpringBoot的CommandLineRunner和ApplicationRunner这两个接口 SpringBoot之CommandLineRunner接口和ApplicationRunner接口,这篇文章中我们从源码上简单的分析一下这两个 接口。在org.springframework.boot.SpringApplication#run()这个方法中有这样原创 2017-11-19 23:12:32 · 2115 阅读 · 0 评论 -
SpringMVC之分析HandlerMethodReturnValueHandler(二)
我们在之前的文章中对HandlerMethodReturnValueHandler进行了简单的分析(SpringMVC之分析HandlerMethodReturnValueHandler(一)), 在 这篇文章中我们继续分析一下HandlerMethodReturnValueHandler这个类。有时候我们的请求映射处理方 法的返回值是View对象,当返回值是View对象时,会被ViewMet原创 2017-11-20 23:58:08 · 1575 阅读 · 3 评论 -
SpringBoot启动流程简析(二)
在这篇文章中,我们接着上一篇的内容接着分析。 public ConfigurableApplicationContext run(String... args) { //启动应用的检测 StopWatch stopWatch = new StopWatch(); stopWatch.start(); //SpringBoot的上下原创 2017-12-19 23:55:20 · 1319 阅读 · 1 评论 -
SpringBoot启动流程简析(三)
我们在上一节中说了SpringBoot的应用上下文的对象是AnnotationConfigEmbeddedWebApplicationContext,通过名字直译就是注解配置的可嵌入的web应用上下文。我们对它先不做过多的介绍,在不远的文章中我们就会对它进行一下简单的分析。//上下文的一些准备动作prepareContext(context, environment, listeners原创 2017-12-20 23:00:54 · 1244 阅读 · 1 评论 -
SpringBoot启动流程简析(四)
在我们之前的web开发中,通常都是将应用打成war包或者将编译之后的应用放到tomcat的webapps目录下(其他的web服务器放到相应的目录下),但是我们在用SpringBoot进行web开发的时候,只是启动了一个main类,然后就会神奇的发现tomcat竟然也被启动了(SpringBoot也内置了Jetty),SpringBoot是怎么做到的呢?下面我将慢慢揭开它的神秘面纱: 我们之前说过在原创 2017-12-25 21:37:56 · 1556 阅读 · 1 评论 -
TomCat之Filter小析
对于做过web开发的人来说,Servlet中的过滤器肯定都不会陌生。这里我尝试着分析一下TomCat服务器中对于Filter是怎么组装的。在这之前,先把主要的几个类列一下:Filter 过滤器接口FilterChain 过滤器链FilterConfig 过滤器的配置FilterDef 过滤器的配置和描述ApplicationFilterChain 调用过滤器链App原创 2017-05-07 23:46:21 · 1712 阅读 · 0 评论