spring
文章平均质量分 86
没脑袋的喵
软件工程专业在读研究生
展开
-
mini-spring|把AOP动态代理,融入到Bean的生命周期
在 Spring 框架中,Advice 都是通过方法拦截器 MethodInterceptor 实现的。环绕 Advice 类似一个拦截器的链路Advisor 承担了 Pointcut 和 Advice 的组合,Pointcut 用于获取 JoinPoint,而 Advice 决定于 JoinPoint 执行什么操作。// 切面// 具体的拦截方法// 表达式//单例模式@Override@Override。原创 2024-03-07 08:34:13 · 1043 阅读 · 0 评论 -
mini-spring|基于JDK和Cglib动态代理,实现AOP核心功能
AOP 的核心技术实现主要是动态代理的使用那么我们就需要先来实现一个可以代理方法的 Proxy,其实代理方法主要是使用到方法拦截器类处理方法的调用 MethodInterceptor#invoke,而不是直接使用 invoke 方法中的入参 Method method 进行 method.invoke(targetObj, args) 这块是整个使用时的差异。原创 2024-03-04 08:18:40 · 973 阅读 · 0 评论 -
基于观察者实现,容器事件和事件监听器
什么是java的事件机制java的事件机制一般包括三个部分:EventObject,EventListener和Source。java.util.EventObject是事件状态对象的基类,它封装了事件源对象以及和事件相关的信息。所有java的事件类都需要继承该类。java.util.EventListener是一个标记接口,该接口内是没有任何方法的。所有事件监听器都需要实现该接口。事件监听器注册在事件源上,当事件源的属性或状态改变的时候,调用相应监听器内的回调方法。原创 2024-03-01 10:18:23 · 879 阅读 · 0 评论 -
mini-spring|关于Bean对象作用域以及FactoryBean的实现和使用
在 BeanDefinition 类中新增加的两个属性信息,用于把从 spring.xml 中解析到的 Bean 对象作用范围填充到属性中。i++) {// 判断元素if (!// 判断对象if (!// 解析标签// 获取 Class,方便获取类中的名称Class原创 2024-02-28 23:42:02 · 1125 阅读 · 0 评论 -
mini-spring|定义标记类型Aware接口,实现感知容器对象
Aware标记接口的存在就像是一种标签一样,可以方便统一摘取出属于此类接口的实现类,通常会有 instanceof 一起判断使用。原创 2024-02-27 06:38:50 · 848 阅读 · 0 评论 -
spring源码概念解析-spring循环依赖
循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。解决循环依赖问题需要。原创 2024-02-26 08:35:06 · 402 阅读 · 0 评论 -
spring源码概念解析-spring生命周期
ApplicationContext在初始化应⽤上下⽂的时候就实例化所有单实例的Bean。Bean 的缓存器,它是⼀个⽤HashMap实现的缓存器,单实例的Bean以beanName为键保存在这。不由 Bean 本身实现,它们独⽴于 Bean,实现类以容器附加装置的形式注册到Spring容器中并通。:如调⽤ Bean 构造函数实例化 Bean,调⽤ Setter 设置 Bean 的属性值以及通。初始化容器的时候并未实例化Bean,直到第⼀次访问某个Bean时才实例化⽬标Bean。原创 2024-02-26 07:38:27 · 388 阅读 · 0 评论 -
mini-spring|向虚拟机注册钩子,实现Bean对象的初始化和销毁方法
*** Bean 处理了属性填充后调用InitializingBean、DisposableBean,两个接口方法还是比较常用的,在一些需要结合 Spring 实现的组件中,经常会使用这两个方法来做一些参数的初始化和销毁操作。比如接口暴漏、数据库数据读取、配置文件加载等等。在 BeanDefinition 新增加了两个属性:initMethodName、destroyMethodName,原创 2024-02-26 07:08:12 · 947 阅读 · 0 评论 -
mini-spring 实现应用上下文,自动识别、资源加载、扩展机制
/继承ListableBeanFactoryApplicationContext,继承于 ListableBeanFactory,也就继承了关于 BeanFactory 方法,比如一些 getBean 的方法。@Override// 1. 创建 BeanFactory,并加载 BeanDefinition// 2. 获取 BeanFactory。原创 2024-01-31 00:01:21 · 889 阅读 · 0 评论 -
mini-spring|设计与实现资源加载器并从Spring.xml解析和注册Bean对象
getRegistry()、getResourceLoader(),都是用于提供给后面三个loadBeanDefinitions方法的工具,用于bean的注册和资源加载bean定义抽象类实现接口@Override@Override抽象类把 BeanDefinitionReader 接口的getRegistry、getResourceLoader两个方法全部实现完了,并提供了构造函数,让外部的调用使用方。原创 2024-01-30 22:14:47 · 814 阅读 · 0 评论 -
mini-spring-为bean填充属性&注入bean
主要作用是bean的属性填充主要关注 createBean 的方法中调用的 applyPropertyValues 方法。在 applyPropertyValues 中,通过获取 beanDefinition.getPropertyValues() 循环进行属性填充操作,如果遇到的是 BeanReference,那么就需要递归获取 Bean 实例,调用 getBean 方法。/***/@Overridetry {//为bean填充属性/*** 实例化bean。原创 2024-01-23 01:59:33 · 478 阅读 · 0 评论 -
mini-spring-Bean含参实例化(三)
*** @param beanDefinition bean定义信息* @param beanName bean名称* @param ctor 含了一些必要的类信息,有这个参数的目的就是为了拿到符合入参信息相对应的构造函数* @param args 具体的含参信息* @return*/原创 2024-01-21 23:41:40 · 424 阅读 · 0 评论 -
mini-Spring-BeanDefinition和BeanDefinitionRegistry(二)
null) {AbstractBeanFactory 首先继承了 DefaultSingletonBeanRegistry,也就具备了使用单例注册类方法。接下来很重要的一点是关于接口 BeanFactory 的实现,在方法 getBean 的实现过程中可以看到,主要是对单例 Bean 对象的获取以及在获取不到时需要拿到 Bean 的定义做相应 Bean 实例化操作。原创 2024-01-18 00:44:51 · 996 阅读 · 0 评论 -
mini-Spring-一个简单的bean容器(一)
bean容器放在bean工厂中 bean工厂中有一个HashMap(bean的名称 和 bean本身来存放bean)bean是Object类型的。对上述代码进行测试 HelloService是一个bean。原创 2024-01-17 13:14:17 · 354 阅读 · 0 评论 -
SpringMVC的基础知识
MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器。原创 2023-12-04 00:50:19 · 1268 阅读 · 0 评论 -
Spring-AOP与声明式事务
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。原创 2023-11-29 23:39:20 · 1341 阅读 · 0 评论 -
Spring-SpringFramework特性以及IOC相关知识
当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个根据类型来获取bean时,在满足bean唯一性的前提下,其实只是看:『byName:将自动装配的属性的属性名,作为bean的id在IOC容器中匹配相对应的bean进行赋值。根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类。若在IOC中,没有任何一个兼容类型的bean能够为属性赋值,则该属性不装配,即值为默认值。IOC容器的基本实现,是Spring内部使用的接口,面向spring本身。原创 2023-11-27 23:57:24 · 923 阅读 · 0 评论