#为云笔记追加异常日志处理
需求:当系统发生异常后,将异常信息写入
指定日志文件中。(基于Spring AOP实现)
##编写一个组件(封装将e写入日志文件逻辑)
##添加Spring AOP配置,将组件作用到所有Controller上
(在不修改原有组件代码情况下,可以为组件追加新功能)
#Spring AOP介绍
Aspect Oriented Programming
面向方面(切面)编程
Object Oriented Programming
面向对象编程
AOP是以OOP为基础,区别在于侧重点不同。
OOP侧重点在于对象封装.
AOP侧重点在于某个共同逻辑的提取.
AOP可以将共通逻辑和传统业务逻辑隔离,降低业务
之间的耦合度。
AOP优势:可以将共通业务逻辑和传统业务逻辑隔离,
之后单独封装成独立组件,最后通过AOP配置建立作用
关系。
##AOP相关概念
###切面(Aspect)--要追加的共通处理
在某个时刻和阶段共通调用的业务逻辑。
(共通性,调用时机相同)
###切入点(Pointcut)--给谁追加共通处理
用于指定目标组件及方法,Spring提供了几种切入点
表达式。
####名称限定表达式
excution(修饰符? 返回类型 方法名(参数列表) 异常类型?)
//匹配所有已User结尾的方法
excution(* *User(..))
//匹配UserServuce类中addUser方法
excution(* com.tedu.UserService.addUser(..))
//匹配com.tedu包下所有类所有方法
excution(* com.tedu.*.*(..))
//匹配com.tedu包及子包中所有类所有方法
excution(* com.tedu..*.*(..))
####类型限定表达式
within(类型)
//匹配UserService类中所有方法
within(com.tedu.UserService)
//匹配com.tedu包下所有类所有方法
within(com.tedu.*)
//匹配com.tedu包及子包中所有类所有方法
within(com.tedu..*)
###通知(Advice)--啥时候调共通
用于指定切入时机。意思是切面和目标作用的时机。
Spring提供了以下5种通知
try{
前置通知-->调用切面 @Before
//目标方法
后置通知-->调用切面 @AfterReturning
}catch(Exception e){
异常通知-->调用切面 @AfterThrowing
}finally{
最终通知-->调用切面 @After
}
环绕通知 = 前置+后置 @Around
-UserService异常处理
切面:异常处理逻辑
切入点:利用表达式指定UserService方法去
通知:在Service方法抛出异常后调用切面
-进入每一个Controller要先打一个桩
切面:打桩
切入点:利用表达式指定Controller.execute方法
通知:在execute方法之前调用切面
com.tedu.cloudnote.controller.book
com.tedu.cloudnote.controller.user
com.tedu.cloudnote.controller.note
within(com.tedu.cloudnote.controller..*)
###Spring AOP实现原理(面试)
Spring AOP是采用动态代理设计模式实现的。
在使用AOP之后,Spring容器会根据目标组件,
动态生成一个新的组件类型,该类被称为
“动态代理类”。
这个动态代理类重写了原有目标组件的业务方法,
在重写方法中调用切面功能和原目标组件功能。
UserServiceImpl(登录检查)
-AOP-》动态代理类$Proxy26,重写Service方法
(调用UserServiceImpl+事务切面组件功能)
--》对外提供服务
Spring使用的动态代理技术有两种:
-采用JDK API java.reflect.Proxy生成
默认适用于有接口的目标组件。
public class 代理类 implements A的接口{
//重写A的接口的方法
}
-采用CGLIB技术生成
默认适用于没有接口的目标组件。
public class 代理类 extends A{
//重写A中所有业务方法
public void f1(){
//调用切面处理
//调用原有组件处理super.f1()
}
}
============课程要求===============
##什么是Spring AOP,有什么优点,实现原理(理论)
##为云笔记项目添加异常处理功能(使用)
##以组为单位准备“项目答辩”工作
(追加新功能+PPT编写)
没有合适的资源?快使用搜索试试~ 我知道了~
达内Java项目云笔记12天完整源码cloudnote_day12_all.zip
共712个文件
svn-base:316个
png:74个
class:47个
5星 · 超过95%的资源 需积分: 50 185 下载量 101 浏览量
2018-01-04
15:00:10
上传
评论 1
收藏 6.72MB ZIP 举报
温馨提示
达内Java项目云笔记12天完整源码cloudnote_day12_all.zip
资源推荐
资源详情
资源评论
收起资源包目录
达内Java项目云笔记12天完整源码cloudnote_day12_all.zip (712个子文件)
all-wcprops 8KB
all-wcprops 3KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 1KB
all-wcprops 953B
all-wcprops 943B
all-wcprops 830B
all-wcprops 631B
all-wcprops 615B
all-wcprops 453B
all-wcprops 439B
all-wcprops 439B
all-wcprops 427B
all-wcprops 425B
all-wcprops 310B
all-wcprops 280B
all-wcprops 278B
all-wcprops 266B
all-wcprops 266B
all-wcprops 127B
NoteServiceImpl.class 7KB
UserServiceImpl.class 3KB
TestCollectionDao.class 2KB
TestAssociationDao.class 2KB
Note.class 2KB
BookServiceImpl.class 2KB
TestFindNotes.class 2KB
Book.class 2KB
TestUserDao.class 2KB
User.class 2KB
ExceptionBean.class 2KB
TestCheckLogin.class 2KB
NoteUtil.class 1KB
MoveNoteController.class 1KB
TestBatchDelete.class 1KB
TestAddUser.class 1KB
TestEmpDao.class 1KB
Share.class 1KB
SearchNotesController.class 1KB
UpdateNoteController.class 1KB
AddNoteController.class 1KB
UserAddController.class 1KB
SearchShareNoteController.class 1KB
UserLoginController.class 1KB
AddBookController.class 1KB
LoadShareNoteController.class 1KB
LoadNotesController.class 1KB
LoadBooksController.class 1KB
NoteResult.class 1KB
DeleteNoteController.class 1KB
ShareNoteController.class 1KB
LoadNoteController.class 1022B
LoggerBean.class 797B
Emp.class 757B
NoteService.class 748B
BaseTest.class 743B
NoteDao.class 626B
NoteException.class 442B
ShareDao.class 438B
UserService.class 341B
BookDao.class 326B
AssociationDao.class 324B
CollectionDao.class 322B
BookService.class 308B
Test.class 257B
UserDao.class 247B
EmpDao.class 168B
.classpath 2KB
org.eclipse.wst.common.component 668B
org.eclipse.wst.jsdt.ui.superType.container 49B
main.css 252KB
icon.css 241KB
umeditor.min.css 14KB
login.css 3KB
image.css 3KB
login_ghost.css 3KB
video.css 3KB
emotion.css 2KB
prettify.css 1KB
formula.css 869B
entries 8KB
entries 3KB
entries 3KB
entries 2KB
entries 2KB
entries 2KB
entries 2KB
entries 2KB
entries 2KB
entries 1KB
entries 1KB
entries 1KB
entries 909B
entries 727B
共 712 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
qw572386
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页