Spring AOP配置元素
AOP配置元素 描 述AOP配置的顶层元素,大多数的<aop:*>元素必须包含在
定义切点
定义切点
定义最终增强(不管被通知的方法是否执行成功)
定义after-returning增强
定义after-throwing增强
定义环绕增强
定义前置增强
启动@AspectJ注解驱动的切面
使用注解实现IOC的配置
前面我们说过用xml的形式配置IOC,那种方式是比较麻烦的,在Spring2.0以后的版本我们就可以使用注解来配置,进一步减少了配置文件的代码
使用注解定义Bean
上面代码我们通过注解定义了一个名为userDao的Bean@Autowired的作用和在xml文件中编写
<!--扫描包中注解标注的类--> <context:component-scan base-package="service,dao"/> <!--多个包之前用逗号隔开-->Spring还提供了其他的注解
@Componet:实现Bean组件的定义
@Repository:用于标注DAO类
@Service:用于标注业务类
@Controller:用于标注控制器类
@Autowired:实现Bean的自动装配
@Qualifier:指定Bean的名称
@Resource:实现Bean的组件装配
大家可以查看Spring的开发手册 进一步了解他们的用法
AspectJ
面向切面的框架,它扩展了Java语言,定义了AOP 语法,能够在编译期提供代码的织入
@AspectJ
AspectJ 5新增的功能,使用JDK 5.0 注解技术和正规的AspectJ切点表达式语言描述切面
Spring通过集成AspectJ实现了以注解的方式定义增强类,大大减少了配置文件中的工作量
利用轻量级的字节码处理框架asm处理@AspectJ中所描述的方法参数名
使用注解定义切面实现日志功能
切入点表达式使用@Pointcut注解来表示,而切入点签名则需要一个普通的方法定义来提供,
如上面代码中的pointcut()方法,作为切入点签名的方法必须返回void类型,切入点定义好后,就可以使用pointcut()签名进行引用
定义完切面后,还需要在Spring配置文件中完成织入工作
配置文件中首先要导入aop命名空间,只需要在配置文件中添加
使用注解定义其他类型增强异常抛出增强
/** * 通过注解实现异常抛出增强 */ @Aspect public class ErrorLogger { private static final Logger log = Logger.getLogger(ErrorLogger.class); @AfterThrowing(pointcut = "execution(* service.UserService.*(..))", throwing = "e") public void afterThrowing(JoinPoint jp, RuntimeException e) { log.error(jp.getSignature().getName() + " 方法发生异常:" + e); } }使用AfterThrowing注解可以定义异常抛出增强,如果需要获取抛出的异常,可以为增强方法声明相关类型的参数,并通过@AfterThrowing注解的throwing属性指定该参数名称,Spring会为其注入从目标方法抛出的异常实例
其他的方法都是大同小异,大家可以自己动手试一试
@Aspect(定义一个切面 )
@Before(前置增强)
@AfterReturning(后置增强)
@Around (环绕增强)
@AfterThrowing(异常抛出增强)
@After(最终增强)
在配置文件中添加
写的不好还有不懂的地方,大家可以留言一下 我会尽量解决
by安心