AOP使用注解配置流程:
1、当spring容器启动时候。
   < context:component- scan base-package= "cn.itheima03.spring.aop.annotation" ></context :component-scan>

2、在上面的包及子包中查询全部的类,依照类扫描注解的机制把类放入到spring容器中

3、 检查是否配置:<aop:aspectj-autoproxy> </aop: aspectj-autoproxy>

4、查找哪些类上加@Aspect注解,会查找加了该注解的全部的方法。看方法上是否有 @Pointcut注解

5、把 @Pointcut的切入点表达式解析出来和spring中的bean进行匹配。假设匹配成功,则创建代理对象

6、 生成的代理对象的方法=通知+ 目标方法

完整代码:
1.配置文件:appliactionContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
          http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-2.5.xsd
          http://www.springframework.org/schema/aop
          http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" >
     <!--
          1、把全部的bean放入到spring容器中,启动类扫描机制的注解
          2、启动AOP的注解
      -->
           <context:component-scan base-package="cn.itheima03.spring.aop.annotation" ></context:component-scan>
           <aop:aspectj-autoproxy></ aop:aspectj-autoproxy>
          
</beans>

2.给相关类配置注解:
//配置注解,须要产生实例
@Repository("classesDao" )
public class ClassesDaoImpl extends HibernateUtils implements ClassesDao{

     public String
saveClasses(Classes classes) {
           sessionFactory.getCurrentSession().save(classes);
           return "aaaa" ;
     }

     public List<Classes>
getClasses() {
           return sessionFactory .getCurrentSession().createQuery("from
Classes").list();
     }

     public void updateClasses(Classes
classes) {
           sessionFactory.getCurrentSession().update(classes);
     }

}
=============================
/**
 * @Aspect该注讲解明该类是一个切面类 ,等效于:
 * <aop:aspect ref="myTransaction">
 *   <aop:pointcut expression="execution(* cn.itheima03.spring.aop.annotation.ClassesDaoImpl.*(..))"
 *         id=" aa()"/>
 * </aop:aspect>
 */
@Component("myTransaction" )
@Aspect
public class MyTransaction extends HibernateUtils{
     private Transaction transaction;
     @Pointcut("execution(*
cn.itheima03.spring.aop.annotation.ClassesDaoImpl.*(..))")
     private void aa(){} //方法签名  
方法的修饰符最好为private,返回值必须是void
     
     @Before("aa()")
     public void beginTransaction(){
           this.transaction = sessionFactory.getCurrentSession().beginTransaction();
     }
     
     @AfterReturning( "aa()")
     public void commit(){
           this.transaction .commit();
     }
}


【Spring五】AOP之使用注解配置的更多相关文章

  1. 黑马Spring学习 AOP XML和注解配置 5种通知 切点切面通知织入

    业务类 package cn.itcast.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoin ...

  2. Spring的AOP配置文件和注解实例解析

    1.1           Spring的AOP配置文件和注解实例解析 AOP它利用一种称为"横切"的技术,将那些与核心业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减 ...

  3. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  4. Spring(十五):通过注解配置 Bean

    在ClassPath中扫描组件 1)组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件: 2)特定组件包含: --- @C ...

  5. Spring(五)AOP简述

    一.AOP简述 AOP全称是:aspect-oriented programming,它是面向切面编号的思想核心, AOP和OOP既面向对象的编程语言,不相冲突,它们是两个相辅相成的设计模式型 AOP ...

  6. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  7. Spring IOC机制之使用注解配置bean

    一. 通过注解配置bean 1.1       概述 相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式. 1.2       ...

  8. spring aop自动代理注解配置之二

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  9. spring aop自动代理注解配置之一

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

随机推荐

  1. [Linux]Vim的安装及使用

    1.安装:$sudo apt-get install vim 2.查看Vim所在路径$whereis vim 3.启动Vim $'/usr/bin/vim.tiny'  4. 退出Vim窗口:Ctrl ...

  2. sql server 数据库基础学习心得 思维导图

  3. BootStrap Progressbar 实现大文件上传的进度条

    1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取 ...

  4. 从零开始学习MySQL1---MySQL基础

    数据库基础 数据库是一个长期存储在计算机内的.有组织的.有共享的.统一管理的.数据集合.它是一个按数据结构来存储和管理数据的计算机软件系统.数据库包含两层含义:保管数据的仓库,以及数据管理的方法和技术 ...

  5. [BZOJ 1143] [CTSC2008] 祭祀river 【最长反链】

    题目链接:BZOJ - 1143 题目分析 这道题在BZOJ上只要求输出可选的最多的祭祀地点个数,是一道求最长反链长度的裸题. 下面给出一些相关知识: 在有向无环图中,有如下的一些定义和性质: 链:一 ...

  6. Google将向IETF标准提交QUIC协议提案

    Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...

  7. Steady Cow Assignment

    poj3189:http://poj.org/problem?id=3189 题意:这一题的题意.我看了很长时间才弄懂.就是给你n头牛,m个牛棚,每个牛对每一个牛棚会有一个满值,第i行第j个数表示的是 ...

  8. WebService:设置服务器提供SOAP1.2的服务

    1,访问通过cxf发布的服务 (1)与之前一样,同样可以通过在本地通过wsdl文件和命令行生成Java文件来访问服务. 但是我们既然使用了cxf发布,就要通过cxf的工具生成访问.可以通过cxf目录的 ...

  9. mysql视图的作用(详细)

    测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用实在是太强大了,以下是我体验过 ...

  10. java数组遍历——iterator和for方法

    import Java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayTest ...