自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 spring钩子

Spring钩子方法和钩子接口的使用详解前言SpringFramework其实具有很高的扩展性,只是很少人喜欢挖掘那些扩展点,而且官方的Refrence也很少提到那些Hook类或Hook接口,至于是不是Spring官方有意为之就不得而知。本文浅析一下笔者目前看到的Spring的一些对外开放的扩展点、Hook接口或者Hook类,如果有什么错误,希望多多交流指正,一切以Spring的源码为准,文章...

2019-09-29 11:01:37 397

原创 Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor

BeanFactoryPostProcessor和BeanPostProcessor这两个接口都是初始化bean时对外暴露的入口之一,和Aware类似(PS:关于spring的hook可以看看Spring钩子方法和钩子接口的使用详解讲的蛮详细)本文也主要是学习具体的钩子的细节,以便于实际开发中我们能有效率,例如如何在scala中如何获取springboot的启动类等等,一些中间件为了监控整个系统的...

2019-09-29 10:47:03 245

原创 bean的生命周期

2019-09-29 10:15:11 80

原创 java定义注解

小伙伴们。今天我们来说说注解、标志@ 。针对java不同版本来说,注解的出现是在jdk1.5 但是在jdk1.5版本使用注解必须继续类的方法的重写,不能用于实现的接口中的方法实现,在jdk1.6环境下对于继续和实现都是用。jdk1.5版本内置了三种标准的注解:@Override,表示当前的方法定义将覆盖超类中的方法。@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@De...

2019-09-29 09:28:23 108

原创 Spring ConfigurationClassPostProcessor Bean解析及自注册过程

一,bean的自注册过程二,自注册过程说明1,configurationclassparser解析流程  1、处理@PropertySources注解,配置信息的解析2、处理@ComponentScan注解:使用ComponentScanAnnotationParser扫描basePackage下的需要解析的类(@SpringBootApplication注解也包括了@Component...

2019-09-28 20:24:03 181

原创 Spring注解源码分析

我们知道如果想使用spring注解你需要在applicationContext.xml配置文件中设置context:component-scan base-package='xxx’这样spring会帮助我们扫描你所设置的目录里面所有的Bean,如果Bean上面有相应的@Service,@Controller注解(当然还有其他的,这里就不一一列出来),那么Spring的IOC容器将会帮我实例对象,...

2019-09-28 20:14:22 430

原创 Spring--Context

应用上下文Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。Spring自带了多种应用上下文的实现,它们之间主要的区别仅仅在于如何加载配置。1.AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载 Spring应用上下文。2.Annot...

2019-09-28 20:04:46 314

原创 Spring注解配置工作原理源码解析

一、背景知识在【Spring实战】Spring容器初始化完成后执行初始化数据方法一文中说要分析其实现原理,于是就从源码中寻找答案,看源码容易跑偏,因此应当有个主线,或者带着问题、目标去看,这样才能最大限度的提升自身代码水平。由于上文中大部分都基于注解进行设置的(Spring实战系列篇demo大部分也都是基于注解实现的),因此就想弄明白Spring中注解是怎么工作的,这个也是分析上文中实现原理的一...

2019-09-28 15:34:21 297

原创 ConfigurableListableBeanFactory

ConfigurableListableBeanFactory 提供bean definition的解析,注册功能,再对单例来个预加载(解决循环依赖问题).貌似我们一般开发就会直接定义这么个接口了事.而不是像Spring这样先根据使用情况细分那么多,到这边再合并ConfigurableListableBeanFactory具体:1、2个忽略自动装配的的方法。2、1个注册一个可分解依赖的方法...

2019-09-27 22:02:59 1297

原创 外观模式

一、什么是外观模式  有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构收取一定比例的托管管理费用。其实本篇要说的这个设计模式就和...

2019-09-27 21:54:33 103

原创 AutowireCapableBeanFactory接口

AutowireCapableBeanFactory在BeanFactory基础上实现了对存在实例的管理.可以使用这个接口集成其它框架,捆绑并填充并不由Spring管理生命周期并已存在的实例.像集成WebWork的Actions 和Tapestry Page就很实用.一般应用开发者不会使用这个接口,所以像ApplicationContext这样的外观实现类不会实现这个接口,如果真手痒痒可以通过A...

2019-09-27 21:49:36 333

原创 configurablebeanfactory

ConfigurableBeanFactory定义BeanFactory的配置.ConfigurableBeanFactory中定义了太多太多的api,比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系,合并其他ConfigurableBeanFactory,bean如何销毁.ConfigurableBeanFactory同时继承...

2019-09-27 21:46:51 1439

原创 ListableBeanFactory接口

ListableBeanFactory获取bean时,Spring 鼓励使用这个接口定义的api. 还有个Beanfactory方便使用.其他的4个接口都是不鼓励使用的.提供容器中bean迭代的功能,不再需要一个个bean地查找.比如可以一次获取全部的bean(太暴力了),根据类型获取bean.在看SpringMVC时,扫描包路径下的具体实现策略就是使用的这种方式(那边使用的是BeanFact...

2019-09-27 21:42:35 522

原创 代码分层的设计

分层思想,是应用系统最常见的一种架构模式,我们会将系统横向切割,根据业务职责划分。MVC 三层架构就是非常典型架构模式,划分的目的是规划软件系统的逻辑结构便于开发维护。MVC:英文即 Model-View-Controller,分成模型层、视图层、控制层。将页面和业务逻辑分离,提高应用的可扩展性及可维护性。如图所示。事实上,MVC 三层架构只是概念层面的指导思想,我们会将层次结构划分的更加细致。...

2019-09-27 21:37:38 277

原创 HierarchicalBeanFactory

BeanFactory分层package org.springframework.beans.factory; //分层工厂public interface HierarchicalBeanFactory extends BeanFactory { //返回工厂的父工厂 BeanFactory getParentBeanFactory(); //这个工厂中是否...

2019-09-27 21:30:17 247

原创 HierarchicalBeanFactory接口

HierarchicalBeanFactory 提供父容器的访问功能.至于父容器的设置,需要找ConfigurableBeanFactory的setParentBeanFactory(接口把设置跟获取给拆开了!).HierarchicalBeanFactory源码具体:1、第一个方法返回本Bean工厂的父工厂。这个方法实现了工厂的分层。2、第二个方法判断本地工厂是否包含这个Bean(忽略其...

2019-09-27 21:28:57 189

原创 设计模式之组合模式(Composite 模式)

引入composite模式在计算机文件系统中,有文件夹的概念,文件夹里面既可以放入文件也可以放入文件夹,但是文件中却不能放入任何东西。文件夹和文件构成了一种递归结构和容器结构。虽然文件夹和文件是不同的对象,但是他们都可以被放入到文件夹里,所以一定意义上,文件夹和文件又可以看作是同一种类型的对象,所以我们可以把文件夹和文件统称为目录条目,(directory entry).在这个视角下,文件和文...

2019-09-27 15:07:58 269

原创 分布式模式之Broker模式

问题来源:创建一个游戏系统,其将运行在互联网的环境中。客户端通过WWW服务或特定的客户端软件连接到游戏服务器,随着流量的增加,系统不断的膨胀,最终后台数据、业务逻辑被分布式的部署。然而相比中心化的系统,复杂度被无可避免的增大了,该如何降低各个组件之间的耦合度。挑战:需要保证可伸缩性、可维护性、可更新性,需要将服务划分为各个相对独立的组件,组件被分布式的部署,它们之间通过进程间通信方式实现交互...

2019-09-24 15:59:17 528

原创 ActiveMQ源码解析 建立连接

作为一个消息中间件,有客户端和服务端两部分代码,这次的源码解析系列主要从客户端的代码入手,分成建立连接、消息发送、消息消费三个部分。趁着我昨天弄明白了源码编译的兴奋劲头还没过去,今天研究一下建立连接的部分。如果读起来吃力,代码部分可以略过,我把主要的功能点给加粗。通常来说,客户端使用MQ的API建立时,可以分成两个步骤:对于连接的配置,比如服务器IP地址,用户名和密码等等建立连接并启动...

2019-09-24 07:59:42 597

原创 Activemq源码、编译、导入idea、源码调试总结

1、在本地下载源码在GitHub官网搜activemq,找到排名第一的,并打开,如图所示,拷贝url地址。activemq托管地址:https://github.com/apache/activemq.git切换到git bash下,输入命令:mkdir activemqSourcecd activemqSourcegit initgit clone https://github...

2019-09-24 07:37:34 1599 4

原创 Java消息中间件

1.概述中间件非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件。消息中间件管制关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统。优点① 解耦 ② 异步 ③ 横向扩展 ④ 安全可靠 ⑤ 顺序保证(比如kafka)jmsjava消息服务(Java Message Service)即JMS,是一个Java平台中关于...

2019-09-23 16:35:28 252

原创 Spring IOC-BeanFactory的继承体系结构

本文主要介绍BeanFactory以及它的各种继承层级的接口、抽象类及实现类,因为内容很多,所以这里不介绍ApplicationContext继承体系下的类(虽然ApplicationContext本质上也是BeanFactory,但是毕竟这这是我们平时接触最多的两种类别,所以分开说)。关于ApplicationContext继承体系结构在《Spring IOC-ApplicationConte...

2019-09-23 15:58:27 443

原创 Javadoc 使用详解

很多程序对Javadoc都不重视,认识不到Javadoc的作用,很多人都是这样认为的:“我只要写好功能就够了,写Javadoc太浪费时间,也没啥作用,还不如用写Javadoc的时间再多些个功能呢!”,我们知道注释是为了解释代码的作用的,是为了将来给自己或者别人快速了解代码的,在方法内一般用行注释//的比较多,是针对一小块代码做出解释的,而Javadoc的作用是针对整个方法或者整个类做一个简要的概述...

2019-09-23 07:45:31 127

原创 属性编辑器PropertyEditor

在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值。BeanWrapper填充Bean属性时如何将这个字面值转换为对应的double或int等内部类型呢?我们可以隐约地感觉到一定有一个转换器在其中起作用,这个转换器就是属性编辑器。“属性编辑器”这个名字可能会让人误以为是一个带用户界面的输入器,...

2019-09-22 15:32:37 20536

原创 Spring-boot 打成jar包后使用外部配置文件

官网说明第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下;第二种是直接把配置文件放到jar包的同级目录;第三种在classpath下建一个config文件夹,然后把配置文件放进去;第四种是在classpath下直接放配置文件。这四种方式的优先级是从一到四一次降低的,这里主要说前面两种外部配置文件使用。使用方法新建config文件夹放入applic...

2019-09-22 15:23:43 818

原创 java.util.Properties

ava.util.Properties是对properties这类配置文件的映射。支持key-value类型和xml类型两种首先,新建一个文件,如图:然后再Java代码段输入如下代码:import java.io.FileInputStream;import java.io.InputStream;import java.util.Properties; public class ...

2019-09-22 14:54:30 1178

原创 java.util.prefs.Preferences

我们经常需要将我们的程序中的设定,如窗口位置,开启过的文件,用户的选项设定等数据记录下来,以做便用户下一次开启程序能继续使用这些数据。以前我们通常的做法是使用Properties类,它提供以下方法:void load(InputStream inStream)void store(OutputStream out, String header)String getProperty(Stri...

2019-09-22 11:03:04 231

原创 spring源码分析-core.io包里面的类

前些日子看《深入理解javaweb开发》时,看到第一章java的io流,发觉自己对io流真的不是很熟悉。然后看了下JDK1.7中io包的一点点代码,又看了org.springframework.core.io包的一些类和组织方式,当作是学习吧。总结一下。先挂下spring.core.io包的类图,其中接口是方框表示,抽象类带了abstract前缀,剩下那个两个框重贴的则代表实现类。没怎么划过类图...

2019-09-22 10:29:09 234

原创 eclipse

Eclipse中Outline和Package Explorer中显示的小图标的意义里面总共分为三种类型:颜色:红、黄、绿形状:方、菱、圆内部:实心、空心其中:红色方块 代表 private 黄色菱形 代表 protected 绿色圆形 代表 public 实心 代表 函数 空心 代表 变量上面三个...

2019-09-22 09:55:08 390

原创 Thread.getContextClassLoader与Thread.getClassLoader()区别

在阅读spring boot启动时候的源码中,发现获取classLoader使用的是getContextClassLoader于是乎产生了疑问,这种获取ClassLoader的方式与我们最常见的通过Class.getClassLoader二者有什么区别?都是在什么场景下使用呢?首先来看看getClassLoader()方法的注释:Returns the class loader for the...

2019-09-21 20:22:22 467

原创 Class.getResource和ClassLoader.getResource

一案例驱动二源码分析三类加载器ClassLoader四总结五参考一案例驱动最近加载文件的时候遇到了一个问题,很有意思! 具体看下面案例代码public class TestClassLoader { public static void main(String[] args) { System.out.println(TestClassLoader.class...

2019-09-21 19:58:48 173

原创 java项目中的classpath

在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构;这样,...

2019-09-21 15:13:55 180

原创 Spring中资源的加载ResourceLoader

Spring中资源的加载是定义在ResourceLoader接口中的,它跟前面提到的抽象资源的关系如下:ResourceLoader的源码public interface ResourceLoader { /** Pseudo URL prefix for loading from the class path: "classpath:" */ String C...

2019-09-21 14:55:44 866

原创 Spring 源码分析之AbstractApplicationContext源码分析

首先我觉得分析ApplicationContext必须从它的实现类开始进行分析,AbstractApplicationContext我觉得是一个不错的选择,那我们就从这里开始逐一分析吧,首先我自己手画了一张图,作为索引吧,其中蓝色的为类,紫色的为接口,箭头 指向的方向是父类或者父接口。因为里面接口和方法过多,所以不做展示,下面具体来进行代码分析。首先我们来看看这句话,MESSAGE_SOURC...

2019-09-21 11:25:42 217

原创 spring uml

spring执行流程:1: 加载spring.xml文件2: 创建xml文件解析器3: 获取命名空间,即在spring.xml文件中的 http://www.springframework.org/schema/context4: 根据命名空间找到命名空间处理器,在命名空间处理器中包含多个属性解析器:{annotation-config=org.springframework.conte...

2019-09-21 11:17:30 444 1

原创 Spring BeanDefinition

BeanDefinition,顾名思义,是一个对象(Bean)在Spring中描述,其核心类图:从类图我们详细了解BeanDefinition。BeanDefinition接口继承自BeanMetadataElement和AttributeAccessor两个接口。BeanMetadataElement:bean元数据,返回该bean的来源。AttributeAccessor:Spri...

2019-09-21 11:11:46 88

原创 spring 源码-context

1 spring-context 模块概要该模块主要实现在spring-beans 模块的扩展,主要对aop支持及el表达式的实现分析示例 public static void main(String[] args){ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spri...

2019-09-21 10:37:01 490

原创 github中的watch、star、fork的作用

在每个 github 项目的右上角,都有三个按钮,分别是 watch、star、fork,但是有些刚开始使用 github 的同学,可能对这三个按钮的使用却不怎么了解,包括一开始使用 github 的我也是如此,这篇博客,结合自己的理解和使用,说说这三个按钮的用法以及一些个人见解。如下图所示这是我们经常看到的三个按钮。从左至右,依次是 watch star fork,下面分别说下他们的具体作...

2019-09-19 10:28:54 117

原创 springxml解析

springxml解析

2019-09-18 20:23:51 356

原创 Spring Beans 初始化流程分析

Spring Beans 初始化流程分析

2019-09-18 19:23:30 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除