Spring学习笔记AOP(二)

鲁春利的工作笔记,好记性不如烂笔头



要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:

引入后AOP命名空间并启动对@AspectJ注解的支持(spring-context-aop-annotation.xml):

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 启动对@AspectJ注解的支持 -->
    <aop:aspectj-autoproxy />
</beans>

Spring默认不支持@AspectJ风格的切面声明,通过<aop:aspectj-autoproxy/>声明Spring就能够自动扫描被@Aspect标注的切面了。
Spring自带了名为AnnotationAwareAspectJAutoProxyCreator的自动代理类,可以在Spring的配置文件中把AnnotationAwareAspectJAutoProxyCreator注册为一个Bean,但是为了简化配置,Spring在aop命名空间提供了该元素配置,用来自动创建AnnotationAwareAspectJAutoProxyCreator类。

AnnotationAwareAspectJAutoProxyCreator会自动代理一些Bean,这些Bean的方法需要与使用@Aspect注解的Bean中所定义的切点想匹配,这些切点是通过@Pointcut注解定义的。

AOP相关的注解位于org.aspectj.lang.annotation包下。

声明切面
@AspectJ风格的声明切面非常简单,使用@Aspect注解进行声明:然后将该切面在配置文件中声明为Bean后,Spring就能自动识别并进行AOP方面的配置(就是一个普通的bean)。

@Aspect
public class LogAdapter {
    // ......
}

声明切入点
@Pointcut修饰一个方法用来标识该方法为切入点方法,方法必须返回void类型。

@Pointcut(value="切入点表达式", argNames="参数名列表")
public void poincutMethod () {
    // ......
}

说明:切入点@Pointcut的声明不是必须的,可以在通知声明时声明切入点表达式(但如果存在多种通知则每个通知上都需要声明切入点表达式),而声明切入点后可以在使用通知的地方引用切入点定义。

时间: 2024-08-25 01:38:27

Spring学习笔记AOP(二)的相关文章

Spring学习笔记AOP(四)

鲁春利的工作笔记,好记性不如烂笔头 基于XML配置方式声明切面 Spring使用org.springframework.aop.Advisor接口表示切面的概念,Advisor表示只有一个通知(org.aopalliance.aop.Advice)和一个切入点(org.springframework.aop.Pointcut)的切面.Advisor可以使用<aop:config>标签下的<aop:advisor>标签定义. <aop:advisor id="标识&q

Spring 学习笔记(二)

  一.Spring 中的bean配置 –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).FactoryBean –IOC 容器 BeanFactory & ApplicationContext 概述 –依赖注入的方式:属性注入:构造器注入 –注入属性值细节 –自动转配 –bean 之间的关系:继承:依赖 –bean 的作用域:singleton:prototype:WEB 环境作用域 –使用外

Spring学习笔记-AOP前传之动态代理

假设有如下需求: 写一个计算器类,里面包含加减乘除四个方法.在每个方法开始前打印出该方法开始的消息,在每个方法结束前打印出该方法结束的消息和计算的结果. 普通方法,先写一个借口,然后在接口里实现四个方法.在每个方法里加上要打印的语句.实现代码如下. ArithmeticCalculator接口 package com.spring.aop.helloworld; public interface ArithmeticCalculator { int add(int i, int j); int 

Spring学习笔记----AOP编程

先用代码讲一下什么是传统的AOP(面向切面编程)编程 需求:实现一个简单的计算器,在每一步的运算前添加日志.最传统的方式如下: Calculator.java package cn.limbo.spring.aop.calculator; /** * Created by Limbo on 16/7/14. */ public interface Calculator { int add(int i , int j); int sub(int i , int j); int mul(int i

Spring学习笔记之二

在Spring配置文件中,通常使用<aop:config>元素来设置AOP,其中应包括: <aop:aspect>指定aspect,aspect是一个POJO类,包含了很多的advice:advice是aspect中的方法,它包含了要应用在切面上的逻辑: <aop:pointcut>指定pointcut,pointcut是一个表达式,用于指定在哪些对象或者类型上应用aspect的advice: <aop:before>, <aop:after>,

Spring 学习笔记(二)—— IOC 容器(BeanFactory)

使用Spring IoC容器后,容器会自动对被管理对象进行初始化并完成对象之间的依赖关系的维护,在被管理对象中无须调用Spring的API. 为了实现IoC功能,Spring提供了两个访问接口: org.springframework.beans.factory.BeanFactory org.springframework.context.ApplicationContext 前者为Bean工厂,借助于配置文件能够实现对JavaBean的配置和管理,用于向使用者提供Bean的实例: 后者为Ap

Spring学习笔记AOP(三)

鲁春利的工作笔记,好记性不如烂笔头 基于XML配置方式声明切面

Java框架spring 学习笔记(二十):事务管理(注解管理)

注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:tx="http://www.springframework.org/schema/tx" 4 xmlns:aop=&

spring学习笔记(19)mysql读写分离后端AOP控制实例

在这里,我们接上一篇文章,利用JNDI访问应用服务器配置的两个数据源来模拟同时操作不同的数据库如同时操作mysql和oracle等.实际上,上个例子可能用来模拟mysql数据库主从配置读写分离更贴切些.既然如此,在本例中,我们就完成读写分离的模拟在web端的配置实例. 续上次的例子,关于JNDI数据源的配置和spring datasource的配置这里不再重复.下面着重加入AOP实现DAO层动态分库调用.可先看上篇文章<spring学习笔记(18)使用JNDI模拟访问应用服务器多数据源实例 >