
品Spring
编程新说
这个作者很懒,什么都没留下…
展开
-
品Spring:SpringBoot轻松取胜bean定义注册的“第一阶段”
上一篇文章强调了bean定义注册占Spring应用的半壁江山。而且详细介绍了两个重量级的注册bean定义的类。 今天就以SpringBoot为例,来看看整个SpringBoot应用的bean定义是如何注册进容器的。 先来看看经典的启动入口,如下图01: 可以看到调用的是run方法,并把主类(main或primary)作为第一个参数出入。 接下来要做的事情,就是顺藤摸瓜,看看到底发...原创 2019-08-28 07:05:00 · 172 阅读 · 0 评论 -
品Spring:SpringBoot发起bean定义注册的“二次攻坚战”
上一篇文章整体非常轻松,因为在容器启动前,只注册了一个bean定义,就是SpringBoot的主类。 OK,今天接着从容器的启动入手,找出剩余所有的bean定义的注册过程。 具体细节肯定会颇为复杂,同样,大家只需关注都干了什么,不用考虑如何干的。 来宏观的看下容器的启动过程,即refresh方法,如下图01: 只捡重要的来说,就是四大步: 第一,准备好bean工厂(BeanFac...原创 2019-09-02 07:05:00 · 277 阅读 · 0 评论 -
品Spring:注解之王@Configuration和它的一众“小弟们”
其实对Spring的了解达到一定程度后,你就会发现,无论是使用Spring框架开发的应用,还是Spring框架本身的开发都是围绕着注解构建起来的。 空口无凭,那就说个最普通的例子吧。 在Spring中要启用一项XXX功能,标准做法就是用@EnableXXX这种“启用”类型的注解。 那么这种类型的注解一般都做了什么呢?分析一下吧。 看过本号文章的人都知道,Spring的核心就是bean定义和b...原创 2019-09-04 07:05:00 · 174 阅读 · 0 评论 -
品Spring:bean工厂后处理器的调用规则
上一篇文章介绍了对@Configuration类的处理逻辑,这些逻辑都写在ConfigurationClassPostProcessor类中。 这个类不仅是一个“bean工厂后处理器”,还是一个“bean定义注册后处理器”。 这其实是两个接口,它们都是来操作bean定义。所以非常重要。 换句话说,能操作bean定义的,也只有这两个接口,你说重要不重要。 查看下类型信息,在整个Spring...原创 2019-09-09 07:05:00 · 234 阅读 · 0 评论 -
品Spring:详细解说bean后处理器
一个小小的里程碑 首先感谢能看到本文的朋友,感谢你的一路陪伴。 如果每篇都认真看的话,会发现本系列以bean定义作为切入点,先是详细解说了什么是bean定义,接着又强调了bean定义为什么如此重要。 然后又讲了获取bean定义详细信息的方法,接着又讲了bean定义注册的若干种方式,然后是bean定义注册方式的实现细节。 最后又以SpringBoot应用为例,从容器启动前、启动后分两个阶段解说...原创 2019-09-11 08:30:17 · 218 阅读 · 0 评论 -
品Spring:对@PostConstruct和@PreDestroy注解的处理方法
在bean的实例化过程中,也会用到一系列的相关注解。 如@PostConstruct和@PreDestroy用来标记初始化和销毁方法。 平常更多的是侧重于应用,很少会有人去了解它背后发生的事情。 今天就来看下它们的源码,这样它们对你来说就不再是黑盒子了,而且学习源码对每个技术人来说都是必经之路。 人们对事物的认知以及自己的做法,往往分为三个阶段: 1)最初看一个事物,非常复杂,简直没有一点头...原创 2019-09-12 07:05:00 · 413 阅读 · 0 评论 -
品Spring:对@Resource注解的处理方法
@Resource是Java的注解,表示一个资源,它具有双向的含义,一个是从外部获取一个资源,一个是向外部提供一个资源。 这其实就对应于Spring的注入和注册。当它用在字段和方法上时,表示前者。当它用在类上时表示后者。Spring只提供了对前者的支持。 该注解本身表示的是资源,资源的含义是很宽泛的。由于绝大部分情况下在使用Spring的时候,它的容器里都是普通的bean,所以这个注解就作为...原创 2019-09-17 07:05:00 · 1082 阅读 · 0 评论 -
品Spring:对@Autowired和@Value注解的处理方法
在Spring中能够完成依赖注入的注解有JavaSE提供的@Resource注解,就是上一篇文章介绍的。 还有JavaEE提供的@javax.inject.Inject注解,这个用的很少,因为一般都不会去引用JavaEE的jar包。编程新说注:JavaEE早已经被Oracle抛弃了。JavaEE这个名字已经成为历史。 还有两个就是@Value和@Autowired注解,这可是Spring自己...原创 2019-09-18 07:05:00 · 792 阅读 · 0 评论 -
品Spring:真没想到,三十步才能完成一个bean实例的创建
在容器启动快完成时,会把所有的单例bean进行实例化,也可以叫做预先实例化。 这样做的好处之一是,可以及早地发现问题,及早的抛出异常,及早地解决掉。 本文就来看下整个的实例化过程。其实还是比较繁琐的。 一、从容器中找出所有的bean定义名称 因为不知道谁是单例bean,所以只能先全部找出来。如下图01: 二、循环遍历所有的bean名称,检查是否符合条件 首先要合并bean定...原创 2019-09-19 11:45:00 · 202 阅读 · 0 评论 -
品Spring:关于@Scheduled定时任务的思考与探索,结果尴尬了
非Spring风格的代码与Spring的结合 现在的开发都是基于Spring的,所有的依赖都有Spring管理,这没有问题。 但是要突然写一些非Spring风格的代码时,可能会很不习惯,如果还要和Spring风格的代码结合起来的话,就会稍显麻烦。 因为非Spring风格的代码不由Spring管理,所以Spring不会给我们注入依赖,相反,我们要自己去Spring中拿取依赖。 ...原创 2019-09-24 07:05:00 · 292 阅读 · 0 评论 -
品Spring:负责bean定义注册的两个“排头兵”
别看Spring现在玩的这么花,其实它的“筹码”就两个,“容器”和“bean定义”。 只有先把bean定义注册到容器里,后续的一切可能才有可能成为可能。 所以在进阶的路上如果要想走的顺畅些,彻底搞清楚bean定义注册的所有细节至关重要。 毕竟这是万里长征的第一步。有句话怎么说来着,“勿在浮沙筑高台”。 Spring步入注解和Java配置的时代也有些时日了。而且也旗帜鲜明的表达了bean的注册...原创 2019-10-18 16:24:43 · 429 阅读 · 0 评论 -
品Spring:SpringBoot和Spring到底有没有本质的不同?
现在的Spring相关开发都是基于SpringBoot的。 最后在打包时可以把所有依赖的jar包都打进去,构成一个独立的可执行的jar包。如下图: 使用java -jar命令就可以运行这个独立的jar包。如下图: 这个jar包的执行入口就是一个main函数,典型的格式如下: @SpringBootApplication publicclassTasteSp...原创 2019-10-18 16:22:51 · 271 阅读 · 1 评论 -
品Spring:能工巧匠们对注解的“加持”
问题的描述与方案的提出 在Spring从XML转向注解时,为了自身的开发方便,对注解含义进行了扩充(具体参考本号上一篇文章)。 这个扩充直接导致了一个问题,就是需要从注解往元注解以及元元注解(即沿着从下向上的方向)里传递数据。 为了更好的描述这个问题,请再看个示例: @interfaceA{ Stringa()default""; } @A @interface...原创 2019-10-18 16:19:15 · 266 阅读 · 0 评论 -
品Spring:注解终于“成功上位”
历史还是抛弃了XML,当它逐渐尝到注解的甜头之后。 尤其是在Spring帝国,到处充满着注解的气息。 注解从一个提供附属信息的“门客”,蜕变为颇具中流砥柱的“君侯”。 注解成功登上了帝国的舞台,定会像XML一样留下浓墨重彩的一笔。重新认识一下注解 注解其实就是注释、批注的意思。就像看书时在旁边记笔记一样。 如果把书上印刷的内容看作是原始信息,那写上的笔记则是新添加的额外信息,且这个额外信息并...原创 2019-10-18 16:17:53 · 243 阅读 · 0 评论 -
品Spring:实现bean定义时采用的“先进生产力”
前景回顾 当我们把写好的业务代码交给Spring之后,Spring都会做些什么呢? 仔细想象一下,再稍微抽象一下,Spring所做的几乎全部都是: “bean的实例化,bean的依赖装配,bean的初始化,bean的方法调用,bean的销毁回收”。 那问题来了,Spring为什么能够准确无误的完成这波对bean的操作呢?答案很简单,就是: “Spring掌握了有关bean的足够多的信息”。 这就是...原创 2019-10-18 16:12:17 · 203 阅读 · 0 评论 -
品Spring:bean定义上梁山
技术不枯燥,先来点闲聊 先说点好事高兴一下。前段时间看新闻说,我国正式的空间站建设已在进行当中。下半年,长征五号B运载火箭将在海南文昌航天发射场择机将空间站核心舱发射升空。预计用2到3年将空间站建好。 虽然到时你们不让我上去,不过我也为这件事出不了什么力,算扯平了。哈哈,但是我还是会衷心的祝福你。 长征五号火箭首次采用5米大直径的箭体结构,总加注量达到780吨,起飞时共有10台发动机产...原创 2019-10-18 16:10:52 · 399 阅读 · 0 评论 -
品Spring:帝国的基石
序 生活是一杯酒,有时需要麻醉自己,才能够暂时忘却痛苦与不快。 生活是一杯茶,有时需要细细品味,才发现苦涩背后也会有甘甜。 Spring是一杯酒,一眼望不到边的官方文档,着实让人难以下咽。 Spring是一杯茶,在无边的源码中畅游之后,发现色相味道俱全。 高考状元是六月份的网红,Spring帝国是Java界的明星。 状元有自己的“武功秘籍”,Spring有自己的“帝国基石”。 请随...原创 2019-10-18 10:18:57 · 324 阅读 · 0 评论