Spring核心编程思想
文章平均质量分 88
深入剖析源码,掌握核心编程特性
一直不懂
笔记
展开
-
Spring应用上下文周期
Spring应用上下文启动准备阶段Abstract ApplicationContext#prepare Refresh() 方法启动时间-startupDate状态标识-closed(false) 、active(true)初始化PropertySources-initPropertySources()检验Environment中必须属性初始化事件监听器集合初始化早期Spring事件集合BeanFactory创建阶段AbstractApplicationContext#obt转载 2021-06-10 00:00:09 · 143 阅读 · 0 评论 -
Spring Environment抽象
理解Spring Environment抽象统一的配置属性管理Spring Framework3.1开始引入Environment抽象,它统一Spring配置属性的存储,包括占位符处理和类型转换,不仅完整地替换PropertyPlaceholderConfigurer,而且还支持更丰富的配置属性源(PropertySource)条件化Spring Bean装配管理通过Environment Profiles信息,帮助Spring容器提供条件化地装配BeanSpring Environmen转载 2021-06-09 00:35:48 · 225 阅读 · 0 评论 -
Spring 注解
注解驱动发展史注解驱动启蒙时代:Spring Framework 1.X在Spring Framework 1.X时代,其中1.2.0版本是这个时代的分水岭。当时Java5刚刚出炉,业界正刮起使用Annotation的技术风,Spring Framework自然予以支持。虽然框架层面均已支持@ManagedResource和@Transactional等Annotation,然而被注解的Spring Bean的装配仍需要使用XML方式,由于Spring Framework 1.X实现的局限性,XML配转载 2020-10-18 15:30:17 · 708 阅读 · 0 评论 -
Spring 事件
Java 事件/监听器编程模型• 设计模式 - 观察者模式扩展可观者对象(消息发送者) - java.util.Observable观察者 - java.util.Observer• 标准化接口事件对象 - java.util.EventObject事件监听器 - java.util.EventListener面向接口的事件/监听器设计模式• 事件/监听器场景举例Java 技术规范事件接口监听器接口JavaBeansjava.beans.PropertyCh转载 2020-09-29 22:50:29 · 558 阅读 · 0 评论 -
Spring 泛型处理
Java 泛型基础• 泛型类型泛型类型是在类型上参数化的泛型类或接口• 泛型使用场景编译时强类型检查避免类型强转实现通用算法Java 泛型基础泛型类型擦写泛型被引入到 Java 语言中,以便在编译时提供更严格的类型检查并支持泛型编程。类型擦除确保不会为参数化类型创建新类;因此,泛型不会产生运行时开销。为了实现泛型,编译器将类型擦除应用于:• 将泛型类型中的所有类型参数替换为其边界,如果类型参数是无边界的,则将其替换为“Object”。因此,生成的字节码只包含普通类、接口和方法。转载 2020-09-23 22:15:01 · 1453 阅读 · 0 评论 -
Spring 类型转换
Spring 类型转换的实现• 基于 JavaBeans 接口的类型转换实现基于 java.beans.PropertyEditor 接口扩展• Spring 3.0+ 通用类型转换实现使用场景• 场景分析场景基于 JavaBeans 接口的类型转换实现Spring 3.0+ 通用类型转换实现数据绑定YESYESBeanWrapperYESYESBean 属性类型装换YESYES外部化属性类型转换NOYES基于 JavaBeans转载 2020-09-21 23:11:38 · 571 阅读 · 0 评论 -
Spring 数据绑定
Spring 数据绑定使用场景• Spring BeanDefinition 到 Bean 实例创建• Spring 数据绑定(DataBinder)• Spring Web 参数绑定(WebDataBinder)Spring 数据绑定组件• 标准组件org.springframework.validation.DataBinder• Web 组件org.springframework.web.bind.WebDataBinderorg.springframework.web.bin转载 2020-09-19 18:17:55 · 593 阅读 · 0 评论 -
Spring 校验
Spring 校验使用场景• Spring 常规校验(Validator)• Spring 数据绑定(DataBinder)• Spring Web 参数绑定(WebDataBinder)• Spring Web MVC / Spring WebFlux 处理方法参数校验Validator 接口设计• 接口职责Spring 内部校验器接口,通过编程的方式校验目标对象• 核心方法supports(Class):校验目标类能否校验validate(Object,Errors):校验目标转载 2020-09-19 16:21:56 · 555 阅读 · 0 评论 -
Spring 国际化
Spring 国际化使用场景• 普通国际化文案• Bean Validation 校验国际化文案• Web 站点页面渲染• Web MVC 错误消息提示Spring 国际化接口• 核心接口org.springframework.context.MessageSource• 主要概念文案模板编码(code)文案模板参数(args)区域(Locale)层次性 MessageSource• Spring 层次性接口回顾org.springframework.beans.fac转载 2020-09-18 00:10:26 · 875 阅读 · 0 评论 -
Spring 资源管理
引入动机• 为什么 Spring 不使用 Java 标准资源管理,而选择重新发明轮子?• Java 标准资源管理强大,然而扩展复杂,资源存储方式并不统一• Spring 要自立门户(重要的话,要讲三遍)• Spring “抄”、“超” 和 “潮”Java 标准资源管理• Java 标准资源定位职责说明面向资源文件系统、artifact(jar、war、ear 文件)以及远程资源(HTTP、FTP 等)API 整合java.lang.ClassLoader#getR转载 2020-09-15 00:25:24 · 320 阅读 · 6 评论 -
Spring 配置元信息
Spring 配置元信息配置元信息• Spring Bean 配置元信息 - BeanDefinition• Spring Bean 属性元信息 - PropertyValues• Spring 容器配置元信息• Spring 外部化配置元信息 - PropertySource• Spring Profile 元信息 - @ProfileSpring Bean 配置元信息Bean 配置元信息 - BeanDefinition• GenericBeanDefinition:通用型 BeanD转载 2020-09-13 20:00:59 · 408 阅读 · 0 评论 -
Spring Bean 生命周期
Spring Bean 元信息配置阶段BeanDefinition 配置• 面向资源XML 配置Properties 资源配置public class BeanMetadataConfigurationDemo { public static void main(String[] args) { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); // 实转载 2020-09-13 17:12:43 · 195 阅读 · 0 评论 -
Spring Bean 作用域
Spring Bean 作用域作用域来源说明singleton默认 Spring Bean 作用域,一个 BeanFactory 有且仅有一个实例prototype原型作用域,每次依赖查找和依赖注入生成新 Bean 对象request将 Spring Bean 存储在 ServletRequest 上下文中session将 Spring Bean 存储在 HttpSession 中application将 Spring Bean 存储在 Servle转载 2020-09-13 01:04:20 · 226 阅读 · 0 评论 -
Spring IoC 依赖来源
依赖查找的来源查找来源来源配置元数据Spring BeanDefinition<bean id=“user” class=“org.geekbang…User”>@Bean public User user(){…}BeanDefinitionBuilder单例对象API 实现Spring 內建 BeanDefintionBean 名称Bean 实例使用场景org.springframework.context.an转载 2020-09-12 23:27:20 · 344 阅读 · 0 评论 -
Spring IoC 注入
依赖注入的模式和类型• 手动模式 - 配置或者编程的方式,提前安排注入规则XML 资源配置元信息Java 注解配置元信息API 配置元信息• 自动模式 - 实现方提供依赖自动关联的方式,按照內建的注入规则Autowiring(自动绑定)依赖注入类型依赖注入类型配置元数据举例Setter 方法<proeprty name=“user” ref=“userBean”/>构造器<constructor-arg name=“user” ref=转载 2020-09-12 01:07:34 · 174 阅读 · 0 评论 -
Spring IoC 依赖查找
单一类型依赖查找单一类型依赖查找接口 - BeanFactory• 根据 Bean 名称查找getBean(String)Spring 2.5 覆盖默认参数:getBean(String,Object…)• 根据 Bean 类型查找Bean 实时查找Spring 3.0 getBean(Class)Spring 4.1 覆盖默认参数:getBean(Class,Object…)Spring 5.1 Bean 延迟查找getBeanProvider(Class)getBea转载 2020-09-11 01:13:01 · 241 阅读 · 0 评论 -
Spring Bean 基础
定义 Spring Bean什么是 BeanDefinition?BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口,包含:• Bean 的类名• Bean 行为配置元素,如作用域、自动绑定的模式,生命周期回调等• 其他 Bean 引用,又可称作合作者(collaborators)或者依赖(dependencies)• 配置设置,比如 Bean 属性(Properties)BeanDefinition 元信息BeanDefinition 元转载 2020-09-09 23:24:21 · 393 阅读 · 0 评论 -
Spring IoC 容器概述
Spring IoC 依赖查找根据 Bean 名称查找实时查找private static void lookupInRealTime(BeanFactory beanFactory) { User user = (User) beanFactory.getBean("user"); System.out.println("实时查找:" + user);}延迟查找<bean id="objectFactory" class="org.springframework.bea转载 2020-09-09 22:27:48 · 110 阅读 · 0 评论 -
重新认识 IoC
IoC 发展简介什么是 IoC ?In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow ofcontrol as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control fr转载 2020-09-08 01:58:51 · 448 阅读 · 0 评论 -
Spring Framework 总览
Spring 特性总览核心特性(Core)• IoC 容器(IoC Container)• Spring 事件(Events)• 资源管理(Resources)• 国际化(i18n)• 校验(Validation)• 数据绑定(Data Binding)• 类型装换(Type Conversion)• Spring 表达式(Spring Express Language)• 面向切面编程(AOP)数据存储(Data Access)• JDBC• 事务抽象(Transactions)转载 2020-09-08 01:29:08 · 282 阅读 · 0 评论