Ivan's Blog

虽日暮途远,仍梦想诗和远方


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

从安全SDK的BUG看SpringMVC的参数解析

发表于 2019-04-03 | 更新于 2020-11-14 | 评论数:
本文字数: 21k

1. 问题描述

最近在工作中碰到安全组的同学,在编写一个用于加解密的 Filter时考虑问题不够周全导致的 bug。这个 Filter 的原意是在客户端根据一定的条件将请求的数据进行加密,同时在服务端对数据进行解密。于是,他写了一个 Filter 来过滤请求,部分代码如下所示:

1
2
3
4
5
6
7
8
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
SecurityHttpServletRequestWrapper requestWrapper = new SecurityHttpServletRequestWrapper(
(HttpServletRequest) request);
chain.doFilter(requestWrapper, response);

}
阅读全文 »

SpringBoot源码解读——启动篇

发表于 2018-12-20 | 更新于 2020-11-14 | 评论数:
本文字数: 24k

本文主要基于SpringBoot-2.1.0.RELEASE版本分析其启动过程,以及如何完成自动配置的过程。学习理解SpringBoot是如何将我们从繁重的配置文件中解救出来的。

为了演示重点和缩短文章,文中的代码引用通常会省略掉非讲解点的代码。

阅读全文 »

源码阅读与定制化

发表于 2018-12-20 | 更新于 2020-11-14 | 评论数:
本文字数: 2.5k

SpringFramework,Acegi(SpringSecurity),Tomcat,SpringBoot,SpringCloud(部分), Jetty,Velocity,MyBatis/Generator,Quercus(PHP in Java),Guava,Android(UI部分)

源码阅读的目的

  1. 分析与解决 BUG(Quercus)
  2. 寻找隐藏的交互方式(Spring)
  3. 弥补文档的不完善性(非著名项目)
  4. 扩展与定制(Velocity,MyBatis/Generator等)
  5. 安全性检查(Quercus)
  6. 学习(Spring, Tomcat, Android-UI)
阅读全文 »

PATCH与PUT and POST

发表于 2018-12-19 | 更新于 2020-11-14 | 评论数:
本文字数: 3.3k

另外:区分PATCH与PUT、POST方法

  在HTTP原本的定义中[RFC2616],用于上传数据的方法只有POST和PUT。后来鉴于POST和PUT语义和功能上的不足,又加入了PATCH方法[RFC5789]。POST与PUT方法的差异是显而易见的,而PUT与PATCH方法就比较相似,但它们的用法却完全不同。

阅读全文 »

在Spring中实现类似SpringBoot的环境检测能力

发表于 2018-12-17 | 更新于 2020-11-14 | 评论数:
本文字数: 11k

前言

​ 在Boot 你的应用一文中提到了有时候我们需要检测当前时环境是否匹配我们的运行时要求,并根据不同的环境进行个性化的适配。

​ Spring4已经引入了简单的扩展接口 @Conditional和Condition,允许大家自行去识别环境信息,但也仅此而已,并没有内置一些可以让大家在实际场景中使用的条件判定器。

​ 真正将 @Conditional和Condition发扬光大的是SpringBoot,在SpringBoot是全面采用了 AutoConfiguration和 @Conditional将自动配置的强大功能展现得淋漓尽致,内置了超过10种不同类型支持超过100种不同场景的环境检测器。比如:检测当前环境中是否存在某个Class,检测当前容器中是否定义了某个SpringBean,检测当前是否有某个配置项,配置项的值是多少等等。所有的环境检测器都在 org.springframework.boot.autoconfigure.condition 下面,大家可以去翻阅源码学习了解。

阅读全文 »

油画里的乡愁

发表于 2018-11-22 | 更新于 2020-11-14 | 评论数:
本文字数: 963

upload successful

本篇油画是画家李自健的作品,他以自己的童年生活为素材,画出了中国乡土文明中的人性光辉,也画出了刻骨的乡愁。在那个已逝的美丽时代,物质尽管匮乏,但不乏温暖,我们都是从那个时代走过来的,内心深处最真实的记忆,很温馨的回忆。如果也能引起你的共鸣,那么庆幸你拥有着如此美丽的乡愁,虽然那时候没有游戏机电视机,但是你有牛有狗有鸡猫,有山有水有鱼虾,你的童年拥有整个大自然最纯净的部分,比现在孩子的童年更幸福!

阅读全文 »

SpringBoot源码解读——打包启动器原理

发表于 2018-10-23 | 更新于 2020-11-14 | 分类于 源码解读 | 评论数:
本文字数: 9.2k

SpringBoot提供了非常多的非常好用的特性,比如内置容器,一键运行,注解驱动,内置监控等等。其中一个非常吸引人也非常便捷的特性就是一键启动:即将应用打包成一个可执行的JAR,并直接启动运行;

很多初学者都会比较困惑,SpringBoot是如何做到将应用代码和所有的依赖打包成一个独立的JAR并运行的,因为传统的开发方式如果要将应用打包成独立的JAR并通过java -jar命令的话,需要通过-classpath属性来指定依赖。我们今天就来分析讲解一下SpringBoot的打包、启动及运行的原理;

阅读全文 »

JavaConfig

发表于 2018-06-17 | 更新于 2020-11-14 | 评论数:
本文字数: 2.9k

JavaConfig的历史

  Spring在最初的时候,一直是采用XML作为容器配置的手段,但随着现代项目的复杂性越来越高,Spring项目大量的烂用XML反而变成一个灾难,遭受了非常严励的一个批评。由于Spring会把几乎所有的业务类都以Bean的形式配置在XML文件中,造成了大量的XML文件。使用XML来配置Bean失去了编译时的类型安全检查。大量的XML配置使得整个项目变得更加复杂。Rod Johnson也注意到了这个非常严重的问题。当随着JAVA EE 5.0的发布,其中引入了一个非常重要的特性——Annotations(注解)。注解是源代码的标签,这些标签可以在源代码层进行处理或通过编译器把它融入到class文件中。在JAVA EE 5以后的版本中,注解成为了一个主要的配置选项。

阅读全文 »

[转]这两首名诗到底是谁作的?

发表于 2018-03-23 | 更新于 2020-11-14 | 分类于 诗词鉴赏 | 评论数:
本文字数: 1.4k

upload successful

翻读唐诗,关注到两宗“悬案”。

涉及到的两首唐诗都是流传千古的名篇。
一首是《登鹳雀楼》:

1
2
3
白日依山尽,黄河入海流。

欲穷千里目,更上一层楼。

另一首是《清明》:

1
2
3
清明时节雨纷纷,路上行人欲断魂。

借问酒家何处有,牧童遥指杏花村。

阅读全文 »

Spring Boot/Cloud 的背后

发表于 2018-03-23 | 更新于 2020-11-14 | 评论数:
本文字数: 7.6k

upload successful

我们刚开始学习 Spring Boot 的时候肯定都会看到这么一句话:

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。

这里的 Pivotal 团队肯定就是 Spring Boot 的研发团队了,那么这个 Pivotal 团队到底是个什么来头呢?和 Spring 又有那些关系?不着急且听我慢慢道来。

要说起这个 Pivotal 公司的由来,我得先从 Spring 企业的这条线来说起。

阅读全文 »

12…11
Ivan

Ivan

104 日志
7 分类
99 标签
RSS
GitHub E-Mail Weibo Google Twitter FB Page
© 2020 Ivan
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.0.1