5 it_lihongmin

尚未进行身份认证

我要认证

java开发

等级
TA的排名 1w+

Spring Cloud 序列化和反序列化过程定制(Jackson)

现在都是基于Spring Cloud Feign进行微服务的调用,并且序列化的过程都封装完成的。只是自己可以定制序列化的方式,但是为了调用的时候能方便的找到问题所在等,基本都会使用json(Jackson等)方式的序列化【虽然性能比较差】。但是最近在项目上使用的时候,自己的需求是根据不同的类型(或者枚举),入参和出参会传入不同的子类,但是在接口的定义上只能使用父类进行接收。当反序列化完成后,在Controller层拿到的数据就只有父类公共的字段,而子类特有的字段在序列化时直接进行丢弃了。 ...

2020-09-21 21:53:28

Mybatis(二)、mybatis总配置文件

目录1、properties、priperties(属性)2、settings、setting(设置)1)、cacheEnabled(是否开启二级缓存,默认为true)2)、lazyLoadingEnabled(关联查询的延迟加载,默认为false)3)、defaultExecutorType(默认Executor类型)3、typeAliases(类型别名)4、typeHandlers(类型处理器)5、objectFactory(Object生成工厂)6、plugins、

2020-07-14 21:57:11

Mybatis(一)、ORM框架个人理解

使用Mybatis等ORM框架多年后,再去看之前对ORM的理解和之前些的博客,,,。几年前基本面试都问的Hibernate、jpa等

2020-07-12 11:20:36

Spring Boot源码(七) - 嵌入式Servlet服务器(Tomcat)

目录1、获取Servlet服务器工厂2、根据不同Web类型的AbstractApplicationContext,对应不同的ServletContextInitializer以初始化准备3、调用工厂方法生产Servlet服务器4、在ConfigurableEnvironment中设置ServletContext属性 通过上一篇博客做好了Spring容器(AbstractApplicationContext)的refresh之前的准备工作,下面则进行refresh操作。整体流程可以参..

2020-07-02 23:07:42

Spring Boot源码 - @ConditionalOnBean实现分析

在上一篇@Conditional之后,知道了动态判断注册bean的是怎么实现的。执行的时机,回调时传入了什么对象,只是在Spring BootCondition下面会有很多更复杂的情况,所以就使用比较常见的@ConditionalOnBean为例,分析其结构和回调的逻辑。@Target({ ElementType.TYPE, ElementType.METHOD })@Retention(RetentionPolicy.RUNTIME)@Documented@Conditional...

2020-06-30 22:29:12

Spring源码 - @Conditional实现分析

@Conditional是Spring 4出现的注解,但是真正露出价值的是Spring Boot的扩展@ConditionalOnBean等。但是任然使用的是Spring框架进行处理,并没有做太多定制的东西,所以还是先看看@Conditional注解的实现。@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Con...

2020-06-28 23:46:21

Spring Boot源码(六) - 自动装配(下)- AutoConfigurationImportSelector

继续上一篇,知道了执行时机和调用顺序,继续分析两个方法的逻辑,是怎样实现自动装配的。AutoConfigurationImportSelector.AutoConfigurationGroup1、process@Overridepublic void process(AnnotationMetadata annotationMetadata, DeferredImportSelector deferredImportSelector) { // 断言判断,肯定为true ...

2020-06-26 14:38:51

Spring源码 - DeferredImportSelector实现分析

在分析DeferredImportSelector之前,根据名字Deferred(延迟的)ImportSelector。ImportSelector则是将selectImports返回的字符串数组,注册成为Bean,详细过程可以参见:Spring源码-ImportSelector实现分析。那么有几个问题:1)、怎么延迟的;2)、执行时机,或者在什莫时候被调用的;3)、返回后的字符串数组,怎么注册成Bean(或者Beandefinition)。 之前在分析Spring源码时,并没有分析D...

2020-06-26 09:57:41

Spring Boot源码(五) - 自动装配(上)

按照SpringApplication的run方法执行流程,在refreshContext时候会调用refresh方法,其中会在ConfigurationClassPostProcessor中处理@Import,ImportSelector等(详细可以参见:SpringIoc源码(十)- ApplicationContext(六)- refresh(ConfigurationClassPostProcessor上)或Spring源码-ImportSelector实现分析)。而自动装配则是通过@...

2020-06-24 20:33:13

Spring Boot源码(四) - prepareEnvironment、反射创建ApplicationContext对象、prepareContext

目录一、Environment初始化二、反射创建ApplicationContext对象// 将main方法的args参数进行封装ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);// 准备EnvironmentConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArgu

2020-06-22 22:10:11

Spring Boot源码(三) - SpringApplicationRunListener(EventPublishingRunListener)生命周期和回调时机

Spring Boot定义的SpringApplicationRunListener实现类只有EventPublishingRunListener,主要是定义了其生命周期,并且在Spring Boot启动过程中完成回调。

2020-06-20 21:37:14

Spring Boot源码(二) - SpringApplication的run方法

q

2020-06-20 13:04:31

Spring Boot源码(一) - 分析总览

Spring Boot当前版本为2.2.0,之前一直对Spring Boot的各个模块比较模糊,很难理解自动装配等注解与容器启动的关系等。还是先看一下,Spring Boot的特点:1、2、3、4、5、6、

2020-06-18 22:45:54

JVM(一)- 基本结构和总览

目录1、内存自动管理2、虚拟机执行子系统3、JVM与多线程(或者高并发)的重合部分4、调优实战、常用参数等 之前看完《深入理解Java虚拟机》第二版之后觉得收获很大,现在第三版都出来了,书更厚并且增加了很多Java8等的东西,比如成熟的G1垃圾收集器的东西。结合《实战Java虚拟机》的东西,觉得该对这方面进行一些总结了,之前觉得有点杂乱无从下手。后面看到了JVM的结构图,...

2020-01-09 16:19:03

@ControllerAdvice使用场景

目录1、ExceptionHandler2、InitBinder3、ModelAttribute 在Spring MVC进行调用的过程中,会有很多的特殊的需求。比如全局异常,分页信息和分页搜索条件,请求时带来返回时还得回显页面。Spring提供@ControllerAdvice对需要处理的范围进行配置。@Target(ElementType.TYPE)@Retenti...

2020-01-02 10:40:06

SpringMVC源码(九)- ModelAndView(View为String类型)返回值的解析过程

目录一、ModelAndView返回值的解析过程1、适配返回值解析器并解析(handleReturnValue)-ModelAndViewMethodReturnValueHandler2 、视图和数据处理(getModelAndView)3、结果处理(processDispatchResult)二、View为String类型的解析过程1、适配返回值解析器并解析(hand...

2019-12-31 17:28:42

SpringMVC源码(八)- @ResponseBody方式的解析流程

目录1、handleReturnValue(适配解析结果)1)、selectHandler(适配返回值解析器-RequestResponseBodyMethodProcessor)2)、handleReturnValue(解析返回结果)writeWithMessageConverters(返回值处理)HttpMessageConverter的write(返回值以输出流输出到客户...

2019-12-31 14:52:25

SpringMVC源码(七)- doDispatch - RequestMappingHandlerAdapter的handle(方法的调用)

目录一、RequestMappingHandlerAdapter结构1、完成ControllerAdvice注解相关初始化2、各种类型的解析器站初始化1)、argumentResolvers初始化:2)、initBinderArgumentResolvers(数据绑定解析器列表)初始化:3)、returnValueHandlers初始化:二、RequestMappi...

2019-12-30 18:03:30

SpringMVC源码(六)- doDispatch - getHandler获取HandlerExecutionChain(调用方法和拦截器链)

目录getHandler1、匹配HandlerMethod1)、获取真实的请求路径2)、匹配需要调用的具体方法封装的HandlerMethodcreateWithResolvedBean(没看懂)2、匹配连接器链,组装返回HandlerExecutionChain对象 为了方便理解,还是继续SpringMVC源码(四)- 常用HandlerMapping和Hand...

2019-12-29 14:32:03

SpringMVC源码(五)- doDispatch - getHandler的准备阶段(@RequestMapping解析注册)

目录一、doDispatch的getHandler1、RequestMappingHandlerMapping结构2、setApplicationContext回调函数3、afterPropertiesSet回调函数1)、获取可能的类2)、解析和注册3)、递归查询所有的方法4)、将RequestMapping注解修饰的方法以RequestMappingInfo返回...

2019-12-27 17:47:33

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。