在前面两篇关于容器扩展点的文章中,我们已经完成了对BeanFactoryPostProcessor很FactoryBean的学习,对于BeanFactoryPostProcessor而言,它能让我们对容器中的扫描出来的BeanDefinition做出修改以达到扩展的目的,而对于FactoryBean而言,它提供了一种特殊的创建Bean的手段,能让我们将一个对象直接放入到容器中,成为Spring所管理的一个Bean.而我们今天将要学习的BeanPostProcessor不同于上面两个接口,它主要干…
文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.setPropertyValues 2.setPropertyValue(String,Object) 3.setPropertyValue(PropertyTokenHolder,PropertyValue) 4.processLocalProperty 5.setValue DataBinder的子…
接近用了4个多月的时间,完成了整个<Spring官网阅读>系列的文章,本文主要对本系列所有的文章做一个总结,同时也将所有的目录汇总成一篇文章方便各位读者来阅读. 下面这张图是我整个的写作大纲 对应的文章目录汇总如下: Spring官网阅读(一)容器及实例化 本文主要涉及到官网中的1.2,1.3节.主要介绍了什么是容器,容器如何工作. Spring官网阅读(二)(依赖注入及方法注入) 本文主要涉及到官网中的1.4小节,主要涉及到Spring的依赖注入 Spring官网阅读(三)自动注入 在对依赖…
文章目录 什么是AOP AOP中的核心概念 切面 连接点 通知 切点 引入 目标对象 代理对象 织入 Spring中如何使用AOP 1.开启AOP 2.申明切面 3.申明切点 切点表达式 excecution表达式 语法 示例 @annotation表达式 语法 示例 within表达式 语法 示例 @within表达式 语法 示例 arg表达式 语法 示例 @args表达式 语法 示例 this表达式 target表达式 定义切点 4.申明通知 通知的类型 Before AfterReturn…
文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 SmartValidator SpringValidatorAdapter ValidatorAdapter CustomValidatorBean LocalValidatorFactoryBean OptionalValidatorFactoryBean 使用示例 @Validated跟@Va…
文章目录 ApplicationContext 1.ApplicationContext的继承关系 2.ApplicationContext的功能 Spring中的国际化(MessageSource) 国际化是什么? JAVA中的国际化 本地化对象(Locale) 格式化对象 资源文件的加载 Spring中的MessageSource 接口定义 UML类图 Spring中的简单使用 Spring中的环境(Environment)> 1.什么是环境(Environment)? 2.接口定义 3.P…
上篇文章我们已经学习了1.4小结中关于依赖注入跟方法注入的内容.这篇文章我们继续学习这结中的其他内容,顺便解决下我们上篇文章留下来的一个问题-----注入模型. 文章目录 前言: 自动注入: 自动注入的优点: 注入模型: 自动注入的缺陷: 如何将Bean从自动注入中排除? 自动注入跟精确注入的比较总结: 补充(1.4小结的剩余部分) depends-on: lazy: 前言: 在看下面的内容之前,我们先要对自动注入及精确注入有一个大概的了解,所谓精确注入就是指,我们通过构造函数或者setter方…
从今天开始,我们一起过一遍Spring的官网,一边读,一边结合在路神课堂上学习的知识,讲一讲自己的理解.不管是之前关于动态代理的文章,还是读Spring的官网,都是为了之后对Spring的源码做更全面细致的学习,所以在这个过程中,不会涉及过多底层的代码,更多是通过例子证明我们在官网得出的结论,希望自己可以坚持下来,给自己加个油!!! 本文主要涉及到官网中的1.2,1.3节. 文章目录 Spring容器 容器是什么? 容器如何工作? Spring Bean 如何实例化一个Bean? 实例化总结:…
上篇文章我们学习了官网中的1.2,1.3两小节,主要是涉及了容器,以及Spring实例化对象的一些知识.这篇文章我们继续学习Spring官网,主要是针对1.4小节,主要涉及到Spring的依赖注入.虽然只有一节,但是涉及的东西确不少.话不多说,开始正文. 文章目录 依赖注入: 测试setter方法注入 测试构造函数注入 疑问: 区别: 方法注入: 为什么需要方法注入: 通过注入上下文(applicationContext对象) 通过@LookUp的方式(也分为注解跟XML两种方式,这里只演示注解…
文章目录 Formatter 接口定义 继承树 注解驱动的格式化 AnnotationFormatterFactory FormatterRegistry 接口定义 UML类图 FormattingConversionService DefaultFormattingConversionService FormatterRegistrar 配置SpringMVC中的格式化器 配置实现的原理 总结 在上篇文章中,我们已经学习过了Spring中的类型转换机制.现在我们考虑这样一个需求:在我们web应…
文章目录 接口定义 继承关系 接口功能 1.PropertyEditorRegistry(属性编辑器注册器) 接口定义 PropertyEditor 概念 Spring中对PropertyEditor使用的实例 Spring内置的PropertyEditor 2.PropertyAccessor(属性访问器) 接口定义 3.TypeConverter(类型转换器) 接口定义 4.ConfigurablePropertyAccessor 唯一子类(BeanWrapperImpl) 继承关系 Jav…
文章目录 生命周期概念补充 实例化 createBean流程分析 doCreateBean流程分析 第一步:factoryBeanInstanceCache什么时候不为空? 第二步:创建对象(createBeanInstance) 第三步:applyMergedBeanDefinitionPostProcessors 第四步:getEarlyBeanReference 属性注入 第五步:属性注入(populateBean) 总结 在上篇文章中,我们已经对Bean的生命周期做了简单的介绍,主要介绍…
文章目录 生命周期回调 1.Bean初始化回调 2.Bean销毁回调 3.配置默认的初始化及销毁方法 4.执行顺序 5.容器启动或停止回调 Lifecycle 接口 LifecycleProcessor SmartLifecycle 源码分析 启动阶段 停止阶段 Aware接口 初始化过程源码分析 第一步:执行部分aware接口中的方法 第二步:完成Aware接口方法的执行,以及@PostConstructor,@PreDestroy注解的处理 第三步:完成初始化方法执行 第四步:完成AOP代理…
前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等.这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Spring中非常基础的一块内容,也是我们阅读源码的基石.本文主要涉及到官网中的1.3及1.5中的一些补充知识.同时为我们1.7小节中BeanDefinition的合并做一些铺垫 文章目录 BeanDefinition是什么? BeanDefinition的方法分析 BeanDefinition的继承关…
上篇文章已经对BeanDefinition做了一系列的介绍,这篇文章我们开始学习BeanDefinition合并的一些知识,完善我们整个BeanDefinition的体系,Spring在创建一个bean时多次进行了BeanDefinition的合并,对这方面有所了解也是为以后阅读源码做准备.本文主要对应官网中的1.7小节 文章目录 什么是合并? 合并的总结: 关于合并需要注意的点: Spring在哪些阶段做了合并? 1.扫描并获取到`bd`: 2.实例化 为什么需要合并? 合并的代码分析: 总结…
文章目录 BeanFactory 接口定义 继承关系 接口功能 1.HierarchicalBeanFactory 2.ListableBeanFactory 3.AutowireCapableBeanFactory 4.ConfigurableBeanFactory 5.ConfigurableListableBeanFactory 6.AbstractBeanFactory 7.AbstractAutowireCapableBeanFactory 8.DefaultListableBeanF…
之前的文章我们已经学习完了BeanDefinition的基本概念跟合并,其中多次提到了容器的扩展点,这篇文章我们就开始学习这方面的知识.这部分内容主要涉及官网中的1.8小结.按照官网介绍来说,容器的扩展点可以分类三类,BeanPostProcessor,BeanFactoryPostProcessor以及FactoryBean.本文我们主要学习BeanFactoryPostProcessor,对应官网中内容为1.8.2小节 文章目录 总览: 例子: BeanDefinitionRegistryP…
在上篇文章中我们已经对容器的第一个扩展点(BeanFactoryPostProcessor)做了一系列的介绍.其中主要介绍了Spring容器中BeanFactoryPostProcessor的执行流程.已经Spring自身利用了BeanFactoryPostProcessor完成了什么功能,对于一些细节问题可能说的不够仔细,但是在当前阶段我想要做的主要是为我们以后学习源码打下基础.所以对于这些问题我们暂且不去过多纠结,待到源码学习阶段我们会进行更加细致的分析. 在本篇文章中,我们将要学习的是容器…
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比较复杂,系统自带的配置不一定满足我们的需求,往往我们还需要结合实际情况自定义配置. 自定义配置就有讲究了,由于 Spring Boot 的版本变迁,加上这一块本身就有几个不同写法,很多小伙伴在这里容易搞混,今天松哥就来和大家说一说这个问题. 概览 首先我们需要明确,跟自定义 SpringMVC 相关…
文章目录 1.Spring的资源(Resource) 接口简介 UML类图 抽象基类AbstractResource FileSystemResource AbstractFileResolvingResource ByteArrayResource BeanDefinitionResource InputStreamResource UrlResource ClassPathResource ServletContextResource ResourceLoader 接口简介 UML类图 资源…
1.找到spring官网地址:http://spring.io/ 2.点击projects 3.点击springframework 4.点击图片…
1.第一步:打开官网:http://projects.spring.io/ 2.第二步:点击“SPRING FRAMEWORK”图片 3.第三步:点击“小猫”图标 4.第四步:拉到页面中部的位置,找到“Downloading Artifacts”,点击下面的“downloading Spring artifacts”链接 5.第五步:拉到页面底部,找到“Manually downloading Spring distributions”,点击下面的“http://repo.spring.io.”…
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share à SpringCloud视频 http://study.163.com/course/introduction.htm?courseId=1004638001&a…
假如您使用spring,那么本经验可能帮助到您. 假如您使用spring的过程中,需要查询一些文档,那么本经验可能帮助到您. 假如您对下载spring的文档有疑惑,那么本经验可能帮助到您. 教您怎么从spring 官网下载参考文档,首先需要明确您是需要什么文档. 方法/步骤1 首先,在百度搜索spring关键词,选择的是第一个网站. 打开spring页面,是很清爽干净的页面.点击右上角的docs菜单. 打开docs页面,会显示documents,可以看到各种各样的文档规整. 比如您要查找:Spr…
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderService { private OrderDao orderDao; public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } //调用dao的方法 //业务逻辑层,写转账业务 public void accou…
Spring Boot官网:http://projects.spring.io/spring-boot/ Eclipse官网:http://www.eclipse.org/ Maven官网:http://maven.apache.org/ JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html Spring Tool Suite地址:http://spring.io/tools/s…
前言 在企业项目开发中,对系统的安全和权限控制往往是必需的,常见的安全框架有 Spring Security.Apache Shiro 等.本文主要简单介绍一下 Spring Security,再通过 Spring Boot 集成开一个简单的示例. Spring Security 什么是 Spring Security? Spring Security 是一种基于 Spring AOP 和 Servlet 过滤器 Filter 的安全框架,它提供了全面的安全解决方案,提供在 Web 请求和方法调…
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 为什么我们要去造轮子? 造轮子的核心目的,是为了解决通用共性问题的凝练和复用. 虽然市面上已经有了大量成熟稳定用于支撑系统建设的轮子,也就是服务.框架.组件.工具等,但对于一些较大型的公司来说,这些轮子可能并不一定能很好的支撑起系统需要承载的服务体量,这个时候就需要自建一些轮子. 而提倡的不重复造轮子,新造轮子不一定能保证稳定性.一般用在以官网推出的核心轮子上是适合的,比如 Spr…
Spring官网下载dist.zip的几种方法   Spring官网改版后,很多项目的完整zip包下载链接已经隐掉了,虽然Spring旨在引导大家用更“高大上”的maven方式来管理所依赖的jar包,但是完全没想到中国的国情,在伟大的墙内,直接通过maven下载墙外的东西,要么龟速,要么直接被和谐. 下面是从网上搜集的一些方法,可用于一次性下载Spring各项目的完整dist.zip 第一种 直接 http://repo.springsource.org/libs-release-local/o…
Spring官网改版后,很多项目的完整zip包下载链接已经隐掉了,虽然Spring旨在引导大家用更“高大上”的maven方式来管理所依赖的jar包,但是完全没想到中国的国情,在伟大的墙内,直接通过maven下载墙外的东西,要么龟速,要么直接被和谐. 下面是从网上搜集的一些方法,可用于一次性下载Spring各项目的完整dist.zip 第一种 直接 http://repo.springsource.org/libs-release-local/org/springframework/spring/…