JDK代理只能通过接口实现代理
1234567891011121314151617181920212223242526272829// --public interface Play { void play();}// --public class Student implements Play { @Override public void ...
AspectJ 是一种面向切面编程(Aspect-Oriented Programming, AOP)的框架,它主要用于 Java 语言。AOP 是一种编程范式,它允许开发者将横切关注点(如日志记录、事务管理、安全性等)与业务逻辑分离,从而提高代码的模块化和可维护性。
AspectJ 的核心概念包括:
切面(Aspect):切面是包含横切关注点的模块,可以包含多个切点和通知。
切点(Joi...
Aop实现的几种方式:
AspectJ Aop
agent
Aop proxy代理
通过@Bean获取
123456789101112131415161718192021222324252627282930313233343536373839404142434445package com.example.underlyingprinciple.config;import com.alibaba.druid.pool.DruidDataSource;import com.ex...
模拟实现 @Configuration 内的@Bean创建Bean
通过运行@Bean方法获取返回值注册到Bean
123456789101112131415161718GenericApplicationContext context = new GenericApplicationContext();DefaultListableBeanFactory defaultListable...
模拟实现 @ComponentScan 组件扫描创建Bean,以下是实现逻辑:
获取带有@Configuration和@ComponentScan的类,获取其中需要扫描的包路径
通过Spring提供的Resource获取所有包下class文件
遍历class文件找到所有直接或间接带有@Component注解的class
获取到符合的class,使用BeanDefinitionBuilder...
由于公司订单每个订单状态更新时都有非常多的方法需要去执行,现在的代码有很多的耦合的现象,不同的方法纠缠在一起,非常的难以理解难以阅读,所以我准备用观察者模式对代码进行优化,下面是我代码的逻辑
创建观察者抽象类
每一个观察者都需要有一个观察的订单状态,所以这里的orderStatus在创建时就要确定,然后就是execute用来处理订单状态改变时需要做些什么的订单
1234567891011...
123456789101112---title: 标题date: 2022-9-28 11:45:14tags: [标签1,标签2]categories: [一级分类,二级分类,三级分类]sticky: 999 # 值越大,顶置的文章越靠前thumbnail: "缩略图链接"excerpt: "这是文章摘要" # 关闭使用 falsecover: &q...
BeanFactoryBeanFactory是Spring的核心容器
BeanFactory 的主要责任是创建和管理 Bean。
以下是一些它执行的重要任务:
实例化:创建一个新的 Bean 实例。
初始化:初始化 Bean,设置其属性、注入依赖关系,并调用初始化方法(例如 afterPropertiesSet())。
依赖注入:解析和注入 Bean 之间的依赖关系,使每个 Bean 都拥...
什么是 Hexo?Hexo 是一个快速、简洁且高效的博客框架。 Hexo 使用 Markdown (或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
安装需要先安装下列应用程序即可:
Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)
Git
然后执行安装命令
1npm install -g hexo-cl...