文章分类 -  Spring

摘要:本文尝试回答以下几个问题 Spring如何表示在Bean创建过程当中Bean与Bean之间的依赖关系以及这些依赖关系是何时建立的 Spring如何检测循环依赖 哪些情况下的循环依赖能够解决,哪些不能,Spring是如何解决的 在阅读本文前,熟悉BeanFactory体系,Bean的创建流程和各种回调 阅读全文
posted @ 2023-01-31 15:34 小张同学哈 阅读(101) 评论(0) 推荐(0)
摘要:BeanPostProcessor及其子接口是容器级回调接口,通过BeanPostProcessor定义的接口方法可以对容器中的Bean进行个性化的修改,例如:检查bean是不是具有某种特征,如果具有某种特征,就对该类bean做一些个性化定制,比如:填充某些属性亦或者是创建bean的代理等。 App 阅读全文
posted @ 2023-01-31 15:27 小张同学哈 阅读(113) 评论(0) 推荐(0)
摘要:主干方法 Bean创建生命周期流程图 流程分解 Bean的创建过程总的来说分为三个阶段 实例化,也就是创建bean实例,createBeanInstance Bean属性填充,也就是populateBean 初始化Bean,也就是initializingBean 这三个步骤中间又穿插了很多Sprin 阅读全文
posted @ 2023-01-31 15:24 小张同学哈 阅读(386) 评论(0) 推荐(0)
摘要:BeanFactory BeanFactory是所有Spring Bean容器的基类。它定义了如下方法: 多个重载的getBean(...)方法 多个重载的getBeanProvider(...)方法 多个重载的isTypeMatch(...)方法 isSingleton(String name) 阅读全文
posted @ 2023-01-31 15:23 小张同学哈 阅读(87) 评论(0) 推荐(0)
摘要:Spring源码编译过程 本次编译版本为Spring-framework 5.1.x,使用开发工具为Idea 2018.1.3(UItimate Edition) ,JDK版本jdk1.8.0.191 下载源码 git clone git@github.com:spring-projects/spr 阅读全文
posted @ 2023-01-31 15:21 小张同学哈 阅读(2) 评论(0) 推荐(0)
摘要:AOP的标准规范由AOP联盟制定,Spring AOP和AspectJ都是AOP的实现者。AOP的增强织入可以在三个阶段进行:编译期、类加载期和运行期。 编译期织入:使用特殊的编译器,在将Java源文件编译成class文件时进行增强逻辑的织入。 类加载期织入:使用特殊的类加载期,在JVM加载clas 阅读全文
posted @ 2023-01-31 15:17 小张同学哈 阅读(207) 评论(0) 推荐(0)
摘要:Advice优先级与执行顺序的关系 当多个Advice作用于同一个JoinPoint的时候,他们的顺序是怎样的?在这个问题上,SpringAOP的优先级规则与AspectJ是相同的。优先级最高的在进入时先执行,但是在出去时最后执行。示例如下: 在调用被代理的方法时(进入时),优先级最高的Advice 阅读全文
posted @ 2023-01-31 15:16 小张同学哈 阅读(307) 评论(0) 推荐(0)
摘要:本文旨在理清Spring的动态代理创建过程中各个组件类如何协作,共同完成代理的设置和创建,不考虑过多细节问题。 使用示例 话不多说,先上代码: // before Advice public class GreetingAdvice implements MethodBeforeAdvice { @ 阅读全文
posted @ 2023-01-31 15:13 小张同学哈 阅读(274) 评论(0) 推荐(0)
摘要:JoinPoint 静态连接点 连接点是指程序执行的特定位置。比如:方法执行前,方法执行后,方法抛出异常后等等。这些特定的位置就是连接点。连接点在程序中是普遍存在的,或者说无处不在的。程序执行的任何一个位置都可以称之为连接点。 图中,JoinPoint、ProceedingJoinPoint和Joi 阅读全文
posted @ 2023-01-31 15:10 小张同学哈 阅读(155) 评论(0) 推荐(0)
摘要:带着疑问看本文: JDK动态代理为什么只能代理接口,不能代理类? JDK动态代理如何生成?生成的代理类存放在哪里? 本文不介绍代理模式相关知识,只探讨JDK动态代理的技术问题。 JDK动态代理使用示例 public interface Person { void doSomething(); } p 阅读全文
posted @ 2023-01-31 15:02 小张同学哈 阅读(42) 评论(0) 推荐(0)
摘要:Spring Cache Spring3.1开始支持透明的将Cache添加到Spring 应用,其机制与Spring事务类似,靠AOP机制支持 Spring4.1开始支持JSR-107缓存规范 Buffer与Cache buffer与cache很相似,甚至有时候可以相互替换,但是他们指代的是不同的事 阅读全文
posted @ 2023-01-31 14:54 小张同学哈 阅读(63) 评论(0) 推荐(0)
摘要:Spring事务 Spring对事务管理的支持 对编程式事务的支持 Spring在高层次建立了统一的事务抽象。不管用户选择Spring JDBC、Hibernate、JPA还是MyBatis,Spring都可以使用统一的编程模型进行事务管理。Spring提供了事务模板类TransactionTemp 阅读全文
posted @ 2023-01-31 14:53 小张同学哈 阅读(16) 评论(0) 推荐(0)
摘要:Spring对DAO的支持 近几年,数据库持久化技术得到了长足的发展,Hibernate、MyBatis、JPA等成为持久层争放异彩的实现技术。一个典型的DAO应用实例如下图: 在UserDao中定义访问User数据对象的接口,并使用具体的持久化技术实现期中的接口方法,业务层通过UserDao操作数 阅读全文
posted @ 2023-01-31 14:46 小张同学哈 阅读(91) 评论(0) 推荐(0)
摘要:BeanFactory 继承体系 我们先从继承体系的左半部分开始看。 BeanFactory接口: BeanFactory是用于访问Spring容器的根接口,他是最基本的客户端视图(basic client view of a bean container)。一般情况下BeanFactory的实现类 阅读全文
posted @ 2023-01-31 14:39 小张同学哈 阅读(53) 评论(0) 推荐(0)
摘要:依赖注入 当一个Bean定义了其依赖的Bean(通过构造器参数、工厂方法参数、setter方法参数等方式)时,Spring在创建该Bean时将会把该Bean依赖的Bean注入到其对象实例中。用户只是定义了该依赖关系,具体的依赖注入过程由Spring容器完成。 构造器注入 Spring通过调用Bean 阅读全文
posted @ 2023-01-31 14:34 小张同学哈 阅读(77) 评论(0) 推荐(0)
摘要:Bean的配置 在Spring的配置文件applicationContext.xml中配置如下Bean即可将Bean注入到IOC容器中。 <bean class="com.zzvcom.bean.Person" > </bean> id属性 在Spring容器中不能重复,默认值为bean的权限定类型 阅读全文
posted @ 2023-01-31 14:32 小张同学哈 阅读(208) 评论(0) 推荐(0)
摘要:Spring起航 为降低开发的复杂性,Spring采用了如下四种关键策略 基于POJO的轻量级和最小侵入性编程 在使用Spring的过程中,只需要将组件声明为POJO并为之加上特定的Spring注解(Spring的侵入性也仅限于此)就可以轻松使用,而无需实现特定的接口或者方法,或者遵循特定的模板规约 阅读全文
posted @ 2023-01-31 14:29 小张同学哈 阅读(26) 评论(0) 推荐(0)
摘要:SecurityInteceptor SecurityInteceptor是Spring Security的核心组件之一,其主要逻辑在AbstractSecurityInteceptor中实现,目前只有两个具体的子类实现:FilterSecurityInteceptor和MethodSecurity 阅读全文
posted @ 2023-01-31 14:27 小张同学哈 阅读(51) 评论(0) 推荐(0)
摘要:从万米高空看Spring Security 如果站在一个很高的层次看Spring Security的架构的话,Spring的拦截器模型主要用于两个领域:Web 请求 和 方法调用。Spring Security将web资源和应用程序方法通过过滤器和拦截器封装在其内部,只有满足特定的条件才能访问。We 阅读全文
posted @ 2023-01-31 14:10 小张同学哈 阅读(201) 评论(0) 推荐(0)