-
Spring系列-依赖注入实现原理-注解配置
上一篇文章Spring系列-依赖注入实现原理-XML配置我们讲解了通过配置文件进行依赖注入的原理,这篇文章我们就讲解一下Spring通过注解进行依赖注入的实现原理。 还是拿我们之前用的类举例: @Component public class Home { @Autowired private User user; } @Comp... Read More
-
Spring系列-依赖注入实现原理-XML配置
在之前使用Spring的时候,我们都是使用Xml的方式进行配置,虽然现在大部分项目都改为了使用注解方式,但是我们这里还是讲解一下之前的Xml的方式Spring是怎样进行依赖注入的。下一节,我们将讲解注解方式Spring是如何进行注入的。 首先还是使用前面定义的两个类,Home和User。 @Data public class Home { ... Read More
-
Spring系列-Import的实现原理
在上篇文章BeanDefinition解析流程-注解配置中我们讲解了@Import注解标注的类会被Spring当前lite类型的配置类进行解析,在ConfigurationClassParser类中有一个processImports()方法上一节我们没讲,这一节我们就详细分析一下它。 首先看一下这一个方法: // Confi... Read More
-
Spring系列-BeanDefinition解析流程-注解配置
前面我们在BeanDefinition解析流程-XML配置文章中讲解了原始Xml配置方法是怎么加载BeanDefinition的,这次我们来看看通过注解方式是怎么加载BeanDefinition的。 这里需要说明的是,BeanDefinition的解析位置不是固定的,写法不同,解析开始的位置不同。可能由于Spring加载方式太灵... Read More
-
Spring系列-Xml自定义命名空间详解
为什么需要自定义命名空间? Spring在解析Xml配置的时候,默认只识别import、alias、bean、beans标签,其它标签都会走自定义标签解析逻辑。默认的这几种标签远远不能满足我们的使用需求,所以就需要扩展一系列的自定义命名空间。 这里的自定义命名空间并不是说一定是我们使用者定义的命名空间,Spring其实已经... Read More
-
Spring系列-BeanDefinition解析流程-XML配置
Spring的xml配置是很早之前的使用方式了,现在基本都使用注解方式。但是了解xml配置方式是怎么执行的对我们理解Spring的原理有很大的帮助。 下面我们将以ClassPathXmlApplicationContext为例,探索一个Spring是怎么将我们的配置解析成BeanDefinition的。 代码示例 入口 public st... Read More
-
Spring系列-Spring的BeanDefinition详解
BeanDefinition是什么 BeanDefinition是Spring用来保存关于Bean定义信息的。在Spring中,我们可以定义Bean的各种属性,生命周期,初始化等,而且不仅可以使用xml配置,还可以使用注解配置,这些配置最终都会保存在BeanDefinition对象中,Spring后续关于Bean的流程都是依据Be... Read More
-
Spring系列-Spring的Bean创建流程
Spring使用方式 我们使用Spring的时候,一般需要依赖于一个ApplicationContext实现类,我们分别从xml和注解两种方式介绍以下。 注意:这里不讨论使用tomcat等的web项目,我们只讨论普通java项目。无论哪种方式,每个实现类都有很多不同入参的构造方法,我们可以根据需要选择需要的构造方法。 ... Read More
-
Spring系列-Spring基础介绍
Spring简介 Spring 是一个开源框架,主要优势之一就是其分层架构,分层架构允许您可以自由选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。任何 Java 应用都可以从 Spring 中受益。 Spring模块 Spring包含很多模块,如下图所示: 但是其中最重要的主要是三个: ... Read More
-
本地与alpine容器使用lrzsz进行上传下载教程
什么是lrzsz? lrzsz是一款在linux里可代替ftp上传和下载的程序。 什么是alpine? Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此... Read More
-
Java对象头以及锁分析
对象头 JAVA对象头在hotspot中包括两部分数据:Mark Word(标记字段) 和Klass Pointer(类型指针) 数组对象头中还存在一个数组长度(array length) Mark Word 默认存储对象的hashcode,分代年龄,偏向锁标识和锁标志位。这些... Read More
-
SpringBoot集成ldap分页查询AD域用户信息
什么是LDAP LDAP 的全称是 Lightweight Directory Access Protocol,「轻量目录访问协议」。 LDAP 「是一个协议」,约定了 Client 与 Server 之间的信息交互格式、使用的端口号、认证方式等内容。而 「LDAP 协议的实现」,有着众多版本,例如微软的 Active Directory 是 L... Read More
-
线程中断详解
interrupt()方法是中断线程吗? 不是的。 重点:interrupt()方法是给其它线程设置中断状态,不是指给当前线程设置中断状态。 误解:很多人都认为线程的”中断”就是让线程停止。如果你也这么认为,那你对多线程编程还没有入门。 在java中,线程... Read More
-
Java内部类总结
很多学习Java的人都知道Java有内部类,但是我想大部分人在开发中都很少使用内部类编写代码。大部人也不知道内部类有什么作用。 接下来,我们就一起来聊聊内部类。 Java中有四种内部类: 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 public class... Read More
-
SpringBoot配置logback日志示例大全
springboot默认使用的日志框架是logback; 想使用spring扩展profile支持,要以logback-spring.xml命名,其他如property需要改为springProperty 一、configuration 1. scan 当此属性设置为true时,配置文件... Read More