Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zhangjian1949
JavaGuide
提交
07548837
J
JavaGuide
项目概览
zhangjian1949
/
JavaGuide
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
07548837
编写于
6月 09, 2021
作者:
T
TommyMerlin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix typo
上级
52fb411b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
3 deletion
+3
-3
docs/system-design/framework/spring/Spring常见问题总结.md
docs/system-design/framework/spring/Spring常见问题总结.md
+3
-3
未找到文件。
docs/system-design/framework/spring/Spring常见问题总结.md
浏览文件 @
07548837
...
...
@@ -83,11 +83,11 @@ IoC源码阅读
AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,
**却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来**
,便于
**减少系统的重复代码**
,
**降低模块间的耦合度**
,并
**有利于未来的可拓展性和可维护性**
。
**Spring AOP就是基于动态代理的**
,如果要代理的对象,实现了某个接口,那么Spring AOP会使用
**JDK Proxy**
,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用
**Cglib**
,这时候Spring AOP会使用
**Cglib**
生成一个被代理对象的子类来作为代理,如下图所示:
**Spring AOP就是基于动态代理的**
,如果要代理的对象,实现了某个接口,那么Spring AOP会使用
**JDK Proxy**
,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用
**Cglib**
生成一个被代理对象的子类来作为代理,如下图所示:
![
SpringAOPProcess
](
https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/SpringAOPProcess.jpg
)
当然你也可以使用 AspectJ
,Spring AOP 已经集成了AspectJ
,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。
当然你也可以使用 AspectJ
,Spring AOP 已经集成了AspectJ
,AspectJ 应该算的上是 Java 生态系统中最完整的 AOP 框架了。
使用 AOP 之后我们可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样大大简化了代码量。我们需要增加新功能时也方便,这样也提高了系统扩展性。日志功能、事务管理等等场景都用到了 AOP 。
...
...
@@ -117,7 +117,7 @@ AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无
常见的有 2 种解决办法:
2
.
在类中定义一个
`ThreadLocal`
成员变量,将需要的可变成员变量保存在
`ThreadLocal`
中(推荐的一种方式)。
1
.
在类中定义一个
`ThreadLocal`
成员变量,将需要的可变成员变量保存在
`ThreadLocal`
中(推荐的一种方式)。
2.
改变 Bean 的作用域为 “prototype”:每次请求都会创建一个新的 bean 实例,自然不会存在线程安全问题。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录