glmapper

glmapper

从程序的世界中全身而退

SpringBoot 系列-Bean 的生命周期与扩展
本篇基于 SpringBoot 2.2.2.RELEASE 版本,Spring 各个版本之间多少存在一些差异,不过主流程基本相同;大家在阅读过程中需关注这点。 继续承接上一篇 SpringBoot 系列-启动过程分析,本篇围绕一个 bean 的生命周期,对 bean 进行一些修改和扩展。本篇将涉及到以下主要内容: 阅读之前 BeanDefinition 解析时机和过程 invokeBeanFactoryPostProcessors 执行过程分析 invokeBeanDefinitionRegistryPostProcessors 执行过程分析 BeanFactoryPostP...
SpringBoot 系列-资源访问
原文链接:https://smarterco.de/java-load-file-from-classpath-in-spring-boot/ 简介当我们创建一个 SpringBoot web 应用时,有时候需要从 classpath 去加载一些文件,这里记录下在 war 和 jar 两种不同文件格式下加载文件的解决方案 The ResourceLoader在 Java 中 ,我们可以使用当前线程的 classLoader 去尝试加载文件,但是 Spring Framework 为我们提供了更加优雅的解决方案,例如 ResourceLoader。 使用 ResourceLoader ...
SpringBoot 系列-启动过程分析
微信公众号:glmapper工作室掘金专栏:glmapper微 博:疯狂的石头_henu欢迎关注,一起学习、一起分享 SpringBoot 作为目前非常流行的微服务框架,它使得构建独立的 Spring 生产级应用变得非常简单,因此受到很多互联网企业的青睐。 最近在写 SOFATracer 集成 Spring Cloud Stream RocketMQ 的过程中,遇到了一些问题,比如:BeanPostProcessor 不生效,如何在 BeanPostProcessor 不生效的情况下去修改一个 Bean 等,这些问题其实都是和 Bean 的生命周期有关系的,当然也和...
SpringBoot 系列-FatJar 启动原理
微信公众号:glmapper工作室掘金专栏:glmapper微 博:疯狂的石头_henu欢迎关注,一起学习、一起分享 之前有写过一篇文章来介绍 JAR 文件和 MENIFEST.MF 文件,详见:聊一聊 JAR 文件和 MANIFEST.MF,在这篇文章中介绍了 JAR 文件的内部结构。本篇将继续延续前面的节奏,来介绍下,在 SpringBoot 中,是如何将一个 FatJar 运行起来的。 FatJar 解压之后的文件目录从 Spring 官网 或者通过 Idea 创建一个新的 SpringBoot 工程,方便起见,建议什么依赖都不加,默认带入的空的 Spring...
SpringBoot 系列-内嵌 Tomcat 的实现原理解析
对于一个 SpringBoot web 工程来说,一个主要的依赖标志就是有 spring-boot-starter-web 这个 starter ,spring-boot-starter-web 模块在 spring boot 中其实并没有代码存在,只是在 pom.xml 中携带了一些依赖,包括 web、webmvc、tomcat 等: 1234567891011121314151617181920212223242526<dependencies> <dependency> <groupId>org.springframework.bo...
ARK 插件基本规则及注意事项
SOFAARK 是一个轻量级的类隔离框架,其有两个基本的能力:解决依赖包冲突和多应用(模块)合并部署。本篇将从解决依赖角度来说明下 SOFARK 插件的基本使用规则。 下图是官方文档中提供的用于描述依赖包冲突的一个场景: 这里通过一个工程来模拟这种场景,然后通过将其中一个打包成插件的方式来解决。 案例工程1234├── ark-main-project├── dependency-one├── dependency-two├── dependency-two-plugin ark-main-project 为一个 简单的springboot 工程 dependency-one 依赖1...
响应式编程 Reactor 小记
从响应式编程说起响应式编程是一种关注于数据流(data streams)和变化传递(propagation of change)的异步编程方式。 这意味着它可以用既有的编程语言表达静态(如数组)或动态(如事件源)的数据流。 在响应式编程方面,微软跨出了第一步,它在 .NET 生态中创建了响应式扩展库(Reactive Extensions library, Rx)。接着 RxJava 在 JVM 上实现了响应式编程。后来,在 JVM 平台出现了一套标准的响应式 编程规范,它定义了一系列标准接口和交互规范。并整合到 Java 9 中(Flow 类)。 响应式编程通常作为面向对象编程中的“观...
聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。 那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自...
shell 脚本简单归纳和实践
if 条件 OPTION OPTION 解释 [-a file] 如果file存在则为真 ,也可以表示为 and: 条件与if [ -z “condition1” -a -z “condition2” ] [-b file] 如果file存在且是一个块特殊文件则为真 [-c file] 如果file存在且是一个字特殊文件则为真 [-d file] 如果 file 文件存在且是一个目录则为真,d前的!是逻辑非 #表示目录不存在,则执行后面的 then 操作 if [ ! -d lcd_path/par_date ] [-e file] 如果 file文件存在则为...
avatar
Glmapper@leishu
分享与学习