1.AOP(面向切面编程)

  a.定义:AOP将分散在系统中的功能块放到一个地方——切面

  b.重要术语:

    ①切面(Aspect):就是你要实现的交叉功能---共通业务处理可以被切入到多个目标对象。并且多次使用

    ②连接点(Joinpoint):应用程序执行过程中插入切面的地点

    ③通知(Advice):通知切面的实际实现

    ④切入点(Pointcut):定义通知应用在哪些连接点---连接点的集和

    ⑤目标对象(Target Object):被通知的对象,也就是目标对象

    ⑥代理(Proxy):将通知应用到目标对象后创建的对象---AOP中容器返回的对象是代理对象。用户在使用的时候,由代理对象调用切面组件和目标对象的功能

    ⑦织入(Weaving):将切面应用到目标对象从而创建一个新的代理对象的过程

  c.配置XML

    <aop:config>
<aop:pointcut id="userPointCut"
expression="execution(* com.wode.service.UserService.*(..))" />
<aop:aspect id="logAspect" ref="userLogger">
<aop:before method="testLogger" pointcut-ref="userPointCut"></aop:before>
</aop:aspect>
</aop:config>

  d.通知类型:

    ①<aop:before>——前置通知

    ②<aop:after-returning returning="test">——方法调用之后,但是如果有异常将不通知

    ③<aop:after>——最终通知

    ④<aop:after-throwing throwing="e">——方法调用发生异常之后

    ⑤<aop:around>——环绕通知

  e.ProceedingJoinPoint——环绕通知的形参

public void testLogger(ProceedingJoinPoint pjo){

    Object obj=pjo.proceed();    //放行,obj为返回值

    System.out.println(pjo.getTarget());    

    System.out.println(pjo.getArgs()[0]);    //获取形参

    System.out.println(pjo.getSignature().getName());    //获取方法名

    System.out.println(pjo.getTarget().getClass().getName());    //获取类名

}

  f.福利

    ①在xml中书写

  <aop:aspectj-autoproxy />

    ②使用注解

    @Component("userLogger")
@Aspect

    ③定义切入点

    @Pointcut("within(com.wode.service.UserService)")
public void pointCut(){}

    ④设置

    @Before("pointCut()")
public void testLogger() throws Throwable{
System.out.println("前置记录日志");
}

JavaEE 之 Spring(二)的更多相关文章

  1. spring(二、bean生命周期、用到的设计模式、常用注解)

    spring(二.bean生命周期.用到的设计模式.常用注解) Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的. ...

  2. JavaEE 之 Spring Data JPA(二)

    1.JPQL a.定义:Java持久化查询语言(JPQL)是一种可移植的查询语言,旨在以面向对象表达式语言的表达式,将SQL语法和简单查询语义绑定在一起·使用这种语言编写的查询是可移植的,可以被编译成 ...

  3. Spring(二)Bean入门

    一.BeanFactory介绍 1.1.Bean: 在Spring技术中是基于组件的 最基本了是最常用的单元 其实实例保存在Spring的容器当中 Bean通常被定义在配置文件当中,Bean实例化由S ...

  4. Spring二 Bean详解

    Bean详解 Spring框架的本质其实是:通过XML配置来驱动Java代码,这样就可以把原本由java代码管理的耦合关系,提取到XML配置文件中管理.这样就实现了系统中各组件的解耦,有利于后期的升级 ...

  5. Spring(二)——IoC

    IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Inje ...

  6. spring(二) AOP之AspectJ框架的使用

    前面讲解了spring的特性之一,IOC(控制反转),因为有了IOC,所以我们都不需要自己new对象了,想要什么,spring就给什么.而今天要学习spring的第二个重点,AOP.一篇讲解不完,所以 ...

  7. JavaEE 之 Spring(三)

    1.Spring Web MVC a.定义:是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是 ...

  8. Spring(二)之入门示例

    任何编程技术,特别是入门示例,通常都是Hello World,在这里我也遵循这个业界公认的原则. 这里我使用的maven项目,大家如果想要演示,建议使用Eclipse(含maven插件)或Idea(含 ...

  9. Spring(二十)之使用Log4j记录日志

    日志记录,也是常用的,比如异常信息记录或者其他相关信息记录,良好的日志记录有助于当系统出现某些不是特别大的问题时,可及时通过日志信息,捕捉到异常,从而确定是那段代码的问题,避免影响其他的代码. 关于m ...

随机推荐

  1. aview安装和使用

    一.安装aalibwget https://sourceforge.net/projects/aa-project/files/latest/download?source=files --no-ch ...

  2. mysql 定期删除表中无用数据

    MySQL5.1.x版本中引入了一项新特性EVENT,定期执行某些事物,这可以帮助我们实现定期执行某个小功能,不在依赖代码去实现. 我现在有一张表,这张表中的数据有个特点,每天都会有大量数据插入,但是 ...

  3. eclipse 安装教程

    eclipse 安装教程 一:安装包下载: 链接: https://pan.baidu.com/s/1qZtt62o 密码: 4ak2 注:若 下载链接失效,请看本文公告的QQ群,请联系群主. 二:安 ...

  4. Confluence 6 后台中的选择站点首页

    后台中的选择站点首页选择项. https://www.cwiki.us/display/CONFLUENCEWIKI/Configuring+the+Site+Home+Page

  5. SpringBoot集成多数据源

    多数据源就是连接多个数据库 1.在application.properties中配置两个数据库 spring.datasource.driverClassName=com.mysql.jdbc.Dri ...

  6. day04 运算符 流程控制 (if while/of)

    1. 运算符算数运算符 + - * / int / float :数字类型 # print(10 + 3.1)# print(10 / 3)# print(10 // 3)# print(10 % 3 ...

  7. tmk射气球

    问题 : tmk射气球 时间限制: 1 Sec  内存限制: 128 MB 题目描述 有一天TMK在做一个飞艇环游世界,突然他发现有一个气球沿匀速沿直线飘过,tmk想起了他飞艇上有一把弓,他打算拿弓去 ...

  8. 解决Django + DRF:403 FORBIDDEN:CSRF令牌丢失或不正确,{"detail":"CSRF Failed: CSRF cookie not set."}

    我有一个Android客户端应用程序尝试使用Django + DRF后端进行身份验证.但是,当我尝试登录时,我收到以下响应: 403: CSRF Failed: CSRF token missing ...

  9. dump增加的表数据

    备份mysql数据库表中,增加的部分 前提条件: 备份库和正式库表结构一样: 表名不一样可以改: 备份库:192.168.1.10 正式库:192.168.1.11 获取当前"备份" ...

  10. WPF编程之找不到资源mainWindow.xaml

    原文: WPF编程之找不到资源“window1.xaml”之谜 因为将启动窗口移动到了一个新建的文件夹中,启动调试时报找不到资源mainWindow.xaml,原来是App.xaml里面设置的启动窗口 ...