
spring
运动员写代码
这个作者很懒,什么都没留下…
展开
-
Spring boot 快速整合log4j2
首先在前一篇的基础上引入log4j的jar包, 同时spring boot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions...原创 2020-10-13 08:58:40 · 249 阅读 · 0 评论 -
Spring源码分析-IOC容器BeanFactory的设计原理
BeanFactory接口提供了使用IOC容器的规范。在这个基础上,Spring提供了符合了这个IOC容器接口的一系列的实现供开发人员使用。我们以XmlBeanFactory的实现为例来说明简单IOC容器的设计原理。如图1所示为XmlBeanFactory设计的继承关系。可以看到,作为一个简单IOC容器系列最底层实现的XmlBeanFactory,与我们在Spring应用中用到的那些上下文对比,有一个非常明显的特点;它只是提供最基本的IOC容器的功能。理解这一点有助于我们理解Applicati.原创 2020-06-22 05:31:23 · 275 阅读 · 0 评论 -
Spring源码分析-IOC容器BeanFactory的应用场景
BeanFactory提供的是最基本的IOC容器的功能,关于这些功能定义,我们可以在接口BeanFactory中看到。BeanFactory接口定义了IOC容器最基本的形式,并且提供了IOC容器所应该遵守的最基本的服务契约,同时,这也是我们使用IOC容器所应遵守的最底层和最基本的编程规范,这些接口定义勾画出了IOC的基本轮廓。很显然,在Spring的代码实现中,BeanFactory只是一个接口类,并没有给出容器的具体实现,而我们在图1中看到的各种具体类,比如DefaultListableBeanFa原创 2020-06-11 16:46:19 · 200 阅读 · 0 评论 -
Java动态代理
java代理分为静态代理和动态代理,在spring的核心AOP中,我们用到了动态代理,其中包括jdk自带的代理以及通过第三方cglib字节码的方式实现动态代理,所以学习好动态代理有助于我们理解spring的aop,本篇文章主要讲解jdk自身的动态代理。 jdk自身的代理我们就需要知道InvocationHandler和Proxy,我们看下官方的文档介绍:/** * {@code Invo...原创 2020-01-15 17:09:45 · 115 阅读 · 0 评论 -
Spring源码分析-IOC之ConfigurableBeanFactory
ConfigurableBeanFactory继承自HierarchicalBeanFactory,SingletonBeanRegistry,这两个接口我们在前面已经介绍过,大家可以看下具体的介绍,Spring源码分析-IOC之HierarchicalBeanFactory,Spring源码分析-IOC之SingletonBeanRegistry,ConfigurableBeanFactor...原创 2019-03-26 16:56:23 · 596 阅读 · 0 评论 -
Spring源码分析-IOC之Aware
Aware:已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义,Spring中提供了一些Aware相关接口,比如BeanNameAware,BeanFactoryAware,ApplicationContextAware等,下面我们来看下BeanNameAware,BeanNameAware就是将name注入实例,我们来看下具体的应用:package com.c...原创 2019-04-04 20:54:02 · 414 阅读 · 1 评论 -
Spring源码分析-IOC之ListableBeanFactory
ListableBeanFactory继承BeanFactory,主要是根据各种条件获取bean的配置清单,下面我们看下具体的源代码:public interface ListableBeanFactory extends BeanFactory { //判断是否包含指定名称的BeanDefinition boolean containsBeanDefinition(String be...原创 2019-03-27 20:33:06 · 310 阅读 · 0 评论 -
Spring源码分析-IOC之AutowireCapableBeanFactory
AutowireCapableBeanFactory继承自BeanFactory,具有BeanFactory的功能以外,提供创建bean,自动注入,初始化以及应用bean的后置处理,我们来分析下具体的源码:public interface AutowireCapableBeanFactory extends BeanFactory { /** * Constant that in...原创 2019-04-01 21:04:51 · 389 阅读 · 0 评论 -
Spring源码分析-IOC之BeanDefinitionHolder
BeanDefinitionHolder顾名思义就是对BeanDefinition的持有,同时持有的包括BeanDefinition的名称和别名,BeanDefinition我们在前面的文章已经介绍过Spring源码分析-IOC之BeanDefinition,BeanDefinitionHolder同时实现了BeanMetadataElement,BeanMetadataElement我们在前面也...原创 2019-03-28 23:15:20 · 6156 阅读 · 0 评论 -
Spring源码分析-IOC之InitializingBean
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承改接口的类,在初始化bean的时候都会执行该方法,我们首先看下InitializingBean的应用:package com.ck.bean;import java.io.Serializable;import org.springframework.be...原创 2019-04-02 20:18:22 · 490 阅读 · 0 评论 -
Spring源码分析-IOC之InputStreamSource
InputStreamSource接口方法:public interface InputStreamSource { //定位并打开资源,返回资源对应的输入流。 //每次调用都会返回新的输入流,调用者在使用完毕后必须关闭该资源。 InputStream getInputStream() throws IOException;}...原创 2019-04-08 21:38:34 · 3853 阅读 · 1 评论 -
Spring源码分析-IOC之ApplicationContextAwareProcessor
ApplicationContextAwareProcessor实现了BeanPostProcessor接口,BeanPostProcessor在前面我们已经介绍过可以参考Spring源码分析-IOC之BeanPostProcessor,所以在bean实例化的前后会调用BeanPostProcessor的postProcessBeforeInitialization和postProcessAfte...原创 2019-04-15 18:28:25 · 2025 阅读 · 0 评论 -
Spring源码分析-IOC之DisposableBean
上一篇我们讲到了InitializingBean,这一篇我们看下DisposableBean接口,它也只提供一个方法destroy()。如果实现了DisposebleBean接口,那么Spring将自动调用bean中的Destory方法进行销毁,下面我们看下DisposebleBean应用:package com.ck.bean;import java.io.Serializable;...原创 2019-04-03 20:45:51 · 538 阅读 · 0 评论 -
Spring源码分析-IOC之TypeConverter
TypeConverter:定义类型转换方法的接口。通常(但不一定)与PropertyEditorRegistry接口一起实现 ,通常接口TypeConverter的实现是基于非线程安全的PropertyEditors类,因此也不是线程安全的,我们来看下具体的API:public interface TypeConverter { //将value转化为requiredType类型...原创 2019-03-29 21:32:15 · 246 阅读 · 0 评论 -
Spring源码分析-IOC之SimpleAliasRegistry
SimpleAliasRegistry主要使用map作为alias的缓存,并对接口AliasRegistry进行实现,具体代码如下:public class SimpleAliasRegistry implements AliasRegistry { //aliasMap 用来缓存alias,此处考虑并发情况用ConcurrentHashMap private final Map<...原创 2019-03-06 15:29:01 · 192 阅读 · 0 评论 -
Spring源码分析-IOC之HierarchicalBeanFactory
HierarchicalBeanFactory继承自BeanFactory,也就是在BeanFactory定义的功能基础上增加了对parentFactory的支持,这里只提供父容器的访问功能,至于父容器的设置在ConfigurableBeanFactory中设置,ConfigurableBeanFactory继承了HierarchicalBeanFactory,具体代码如下:/** * S...原创 2019-03-14 15:56:45 · 308 阅读 · 0 评论 -
Spring源码分析-IOC之BeanPostProcessor
BeanPostProcessor:主要用于我们想在spring容器完成bean实例化,配置以及其他初始化方法前后要添加自己的逻辑处理,则我们需要用到BeanPostProcessor的接口实现类,然后注册到ioc容器中:package com.ck.ioc;import org.springframework.beans.BeansException;import org.sprin...原创 2019-03-19 17:10:49 · 335 阅读 · 0 评论 -
Spring源码分析-IOC之AttributeAccessor
AttributeAccessor定义用于附加和访问元数据的通用的接口,来自任意对象public interface AttributeAccessor { //设置属性的值 void setAttribute(String name, Object value); //获得指定属性名称的值,如果不存在返回null Object getAttribute(String name...原创 2019-03-15 16:55:34 · 1248 阅读 · 0 评论 -
Spring源码分析-IOC之SingletonBeanRegistry
SingletonBeanRegistry:定义对单例的注册及获取public interface SingletonBeanRegistry { //把一个给定的已经存在对象注册为单例 void registerSingleton(String beanName, Object singletonObject); //获取指定名称的单例对象 Object getSingleto...原创 2019-03-11 16:49:48 · 209 阅读 · 1 评论 -
Spring源码分析-IOC之BeanDefinition
BeanDefinition的作用是用于在spring容器初始化的时,将bean的参数转化为spring内部的BeanDefinition的结构:在spring中BeanDefinition的接口类关系如下:AttributeAccessor, BeanMetadataElement的作用和源码,在之前的文章中我已经分析过:Spring源码分析-IOC之AttributeAcce...原创 2019-03-20 17:24:39 · 1049 阅读 · 0 评论 -
Spring源码分析-IOC之BeanFactory
BeanFactory提供的是最基本的IOC容器的功能,定义了IOC容器的最基本形式,并且提供了IOC容器所应该遵守的最基本的服务契约:public interface BeanFactory { //用户使用容器时,可以使用转义符"&"来得到FactoryBean本身,用来区分通过容器来获取FactoryBean //产生的对象和获取FactoryBean本身...原创 2019-03-12 18:00:15 · 174 阅读 · 0 评论 -
Spring源码分析-IOC之BeanDefinitionRegistry
BeanDefinitionRegistry接口继承了AliasRegistry,在AliasRegistry的基础上,增加了对BeanDefinition的各种增删改查的操作,BeanDefinition的分析可以看上一篇介绍Spring源码分析-IOC之BeanDefinitionpublic interface BeanDefinitionRegistry extends AliasR...原创 2019-03-21 19:01:29 · 290 阅读 · 0 评论 -
Spring源码分析-IOC之BeanMetadataElement
BeanMetadataElement:用于传送配置源对象的超级接口.public interface BeanMetadataElement { //获取源对象,可能返回null Object getSource();}原创 2019-03-18 16:05:35 · 2294 阅读 · 0 评论 -
Spring源码分析-IOC之DefaultSingletonBeanRegistry
上一篇主要讲接口SingletonBeanRegistry,本篇主要讲述DefaultSingletonBeanRegistry,DefaultSingletonBeanRegistry主要对接口SingletonBeanRegistry各函数的实现,具体代码如下:/**DefaultSingletonBeanRegistry 实现了SingletonBeanRegistry ,主要用来管理...原创 2019-03-13 17:42:54 · 450 阅读 · 1 评论 -
Spring源码分析-IOC之FactoryBeanRegistrySupport
上一篇Spring源码分析-IOC之FactoryBean我们介绍了FactoryBean的使用,以及在ioc中的实现原理,其中实现原理中我们可以发现最终是调用的FactoryBeanRegistrySupport的getObjectFromFactoryBean和doGetObjectFromFactoryBean这个方法。 FactoryBeanRegistry...原创 2019-03-25 20:26:14 · 894 阅读 · 0 评论 -
Spring源码分析-IOC之FactoryBean
FactoryBean:spring中所有的bean都是由容器来管理的也就是BeanFactory,但是对FactoryBean而言可不是简单的bean,而是一个能产生或者修饰对象生成的工厂Bean,可以用转义字符"&"来得到FactoryBean本身,下面我们来看具体例子:新建一个类:package com.ck.bean;import java.io.Serializ...原创 2019-03-22 19:04:30 · 488 阅读 · 0 评论 -
Spring源码分析-IOC之AliasRegistry
AliasRegistry是spring用来管理别名的接口,主要有如下几个方法:public interface AliasRegistry { //为给定的bean的name注册一个别名 void registerAlias(String name, String alias); //删除指定的别名 void removeAlias(String ...原创 2019-03-05 17:58:22 · 212 阅读 · 0 评论