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. mongoengine教程1

    mongoengine安装过程,建议先安装好pip,pip是不Python不错的安装包管理器,安装命令:pip install mongoengine. mongoengine是mongodb的pyt ...

  2. Python3.4使用MySql

    如何在Django1.6结合Python3.4版本中使用MySql django默认的mysql连接是Mysqldb,悲催的是此版本只支持到python2.7,oracle官方的mysql-conne ...

  3. GCC编译器的安装

    1.GCC简介 GCC(GNU Compiler Collection)是一套功能强大.性能优越的编程语言编译器,它是GNU计划的代表作品之一.GCC是Linux平台下最常用的编译器,GCC原名为GN ...

  4. 2016022602 - redis安装和启动

    redis安装 我使用的是ubuntu15.1,打开终端,输入命令:sudo apt-get install redis-server 将会在本机安装上redis. 启动redis 启动redis命令 ...

  5. 越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world-b

    上网搜索越狱环境搭建,查到iosOpenDev软件,是个很方便的编写插件,而且可以直接用Xcode创建的工具,便开始着手学习如何去安装 集合了网上的方法后,我安装的时候发现: 1.作者最后更新的时间是 ...

  6. iOS代码实现:创建按钮,绑定按钮事件,读取控件值

    // // main.m // Hello // // Created by lishujun on 14-8-28. // Copyright (c) 2014年 lishujun. All rig ...

  7. JSP中两种模式的总结

    运用JSP/Servlet实现的Web动态交互,主要采用: 模式一:JSP+JavaBean 链接:http://wxmimperio.coding.io/?p=155 模式二;JSP+Servlet ...

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

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

  9. MySQL协议简单分析

     tcpdump -i eth0 -s0  -l -w - port 3306|strings|grep -i -E 'select|update|insert|delete|set' 

  10. Keil 代码折叠功能的使用

    使用keil时将某段{......}内的代码折叠起来的方法: