Aop
1.Terms--
aspect : ->unit of modularity @Aspect
join point: ->a point during the execution of a program ,usually represents a method execution
Advice: ->action taken at particular join point, e.g. “around”,”before”,”after”
Pointcut:->a predicate that matches join points. Associated with a pointcut expression and runs
at any join point matched by the pointcut.
Introduction: ->declaring additional methods or fields on behalf of a type(to intro new
interface)
target object:-> object being advised by one or more aspects
AOP proxy :-> created by the AOP framework to implement the aspect contracts
Weaving: linking aspects with other app. types or objects to create an advised obh.
enable @AspectJ Sipport
spring configuration
<aop:aspectj-autoproxy/>
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
Usage:
e.g.
@Aspect
public class SystemArchitecture {
/**
* A join point is in the web layer if the method is defined
* in a type in the com.xyz.someapp.web package or any sub-package
* under that.
*/
@Pointcut("within(com.xyz.someapp.web..*)")
public void inWebLayer() {}
/**
* A join point is in the service layer if the method is defined
* in a type in the com.xyz.someapp.service package or any sub-package
* under that.
*/
@Pointcut("within(com.xyz.someapp.service..*)")
public void inServiceLayer() {}
/**
* A join point is in the data access layer if the method is defined
* in a type in the com.xyz.someapp.dao package or any sub-package
* under that.
*/
@Pointcut("within(com.xyz.someapp.dao..*)")
public void inDataAccessLayer() {}
/**
* A business service is the execution of any method defined on a service
* interface. This definition assumes that interfaces are placed in the
* "service" package, and that implementation types are in sub-packages.
*
* If you group service interfaces by functional area (for example,
* in packages com.xyz.someapp.abc.service and com.xyz.def.service) then
* the pointcut expression "execution(* com.xyz.someapp..service.*.*(..))"
* could be used instead.
*
* Alternatively, you can write the expression using the 'bean'
* PCD, like so "bean(*Service)". (This assumes that you have
* named your Spring service beans in a consistent fashion.)
*/
@Pointcut("execution(* com.xyz.someapp.service.*.*(..))")
public void businessService() {}
/**
* A data access operation is the execution of any method defined on a
* dao interface. This definition assumes that interfaces are placed in the
* "dao" package, and that implementation types are in sub-packages.
*/
@Pointcut("execution(* com.xyz.someapp.dao.*.*(..))")
public void dataAccessOperation() {}
}
@AfterReturning:->After returning advice runs when a matched method
execution returns normally.
e.g.:
@AfterReturning(
pointcut="com.xyz.myapp.SystemArchitecture.dataAccessOperation()",
returning="retVal")
@AfterThrowing:->runs when a matched method execution exits by throwing an exception.
e.g:@AfterThrowing(
pointcut="com.xyz.myapp.SystemArchitecture.dataAccessOperation()",
throwing="ex")
@Around AroundAdvice:Spring 通过实现MethodInterceptor(aopalliance)来实现包围通知,最大特点是可以修改返回值,当然它在方法前后都加入了自己的逻辑代码,因此功能异常强大。通过MethodInvocation.proceed()来调用目标方法(甚至可以不调用)
分享到:
相关推荐
【标题】"Notes01---Ron" 涉及到的知识点主要集中在Spring框架和Java编程语言上,可能包括源码解析和工具的使用。由于描述中提到了一个博客链接,我们可以推测这篇笔记可能是一位名叫Ron的学习者对于他在阅读源码、...
Starry-Notes Preface 一个记录学习一点一滴的仓库诞生了,但我仍旧感到彷徨。我又发现这迷惘的未来正缓缓在身边打圈,一哒一咔的键盘声里, 渐渐舒展开学习记录的五味,就从这一次Git提交开始,就从这,一次灯光...
- 它通过依赖注入(DI)和面向切面编程(AOP)等核心概念降低各层之间的耦合度。 - Spring支持多种配置方式,包括XML配置和注解驱动的配置。 2. Spring核心(Spring Core) - Spring Core模块是Spring框架的基石...
2. **事务管理**:利用Spring的AOP特性来实现事务管理,简化事务控制的代码量。 3. **异常处理**:Spring提供了一套完善的异常处理机制,可以用来统一处理数据库操作中可能出现的各种异常情况。 ##### 4.4 Spring ...
这份"java-senior-development-engineer-interview-notes-master.zip"压缩包显然是为了帮助准备这类面试而精心整理的资源。以下是基于这个主题可能涉及的一些核心知识点的详细解释: 1. **Java基础知识**:理解Java...
它简化了依赖注入,提供了面向切面编程(AOP),并包含用于构建Web应用的模块,如Spring MVC。在Notes-App中,Spring可能被用来创建控制器,处理HTTP请求,以及配置数据库连接。 4. **RESTful API**:REST...
13. **Spring框架**:依赖注入,AOP(面向切面编程),Spring Boot,Spring MVC等。 14. **数据库连接**:JDBC基础,事务处理,预编译语句,批处理等。 15. **单元测试**:JUnit,Mockito等测试框架的使用。 这个...
【标题】Linux夏令营-Spring Notes-评估 在本次Linux夏令营中,我们重点关注了Spring框架,这是一个广泛使用的Java应用程序开发框架,特别适用于构建企业级应用。Spring以其模块化、灵活的设计以及对依赖注入的支持...
SpringFramework的知识点非常丰富,不仅包括了核心的依赖注入和面向切面编程(AOP),还包括了对数据访问、事务管理、Web框架等各个方面的支持。这些知识点不仅能够让开发者快速上手Spring Framework,还能帮助他们...
4. **框架与库**:对Spring框架的深入理解,包括依赖注入、AOP(面向切面编程)、Spring Boot、Spring Cloud等,以及MyBatis、Hibernate等持久层框架的使用,能够帮助架构师构建高效、可维护的系统。 5. **微服务...
介绍 核心容器(Spring Core) 核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式...Spring AOP 模块为基于 Spr
动态代理则允许在运行时创建代理类,用于AOP(面向切面编程)或事件监听等功能。 九、JDBC与数据库编程 学习Java如何与数据库交互,理解JDBC API,包括连接数据库、执行SQL语句、处理结果集等操作,以及事务处理和...
- **Spring框架**:企业级应用开发的主流选择,涵盖依赖注入、AOP、MVC等。 - **MyBatis**:持久层框架,简化SQL操作。 - **JUnit**:单元测试框架,用于编写和运行测试用例。 以上内容只是Java编程领域的一小...
其次,框架是Java开发中的重要组成部分,例如Spring Framework是企业级应用开发的首选,它提供了IoC(控制反转)和AOP(面向切面编程)等特性,使得应用程序的结构更加清晰。Spring Boot进一步简化了Spring的启动和...
Spring框架是Java开发中不可或缺的一部分,它以Inversion of Control(IOC)和Aspect-Oriented Programming(AOP)为核心理念,极大地简化了企业级应用的复杂性。这本《Spring原始码深度解析》的笔记主要关注Spring...
Spring框架是Java企业级应用开发中的主流框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心,提供了一个模块化的、易于扩展的平台。学习笔记将引导你深入...
4. **AOP(面向切面编程)**:Spring对AOP的支持,用于实现日志记录、事务管理等横切关注点。 5. **数据访问**:Spring与各种数据库的集成,包括JDBC、Hibernate和MyBatis等ORM工具的使用。 6. **Spring Boot**:...
- **Spring框架**:企业级Java应用的主流框架,包括依赖注入、AOP、Spring Boot、Spring MVC等。 - **JUnit/TestNG**:单元测试框架,用于编写和执行测试用例,保证代码质量。 6. **HTML基础知识** - **HTML元素...
PostSharp是一个比较强调易学易用的AOP框架 PostSharp是一个非常优秀的AOP框架,使用上非常方便,功能强大,对目标拦截的方法不需要...Notes: All vsix files repacked with cracked PostSharp.Compiler.Settings.dll