【Spring五】AOP之使用注解配置

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();

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-01 09:17:23

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

spring事务管理,xml配置aop事务和注解配置aop事务

xml配置和注解配合共同代码 AccountService.java public interface AccountService { //转账方法 void transfer(Integer from,Integer to,Double money); } AccountServiceImpl.java xml配置aop事务的AccountServiceImpl.java public class AccountServiceImpl implements AccountService {

Spring(五)AOP简述

一.AOP简述 AOP全称是:aspect-oriented programming,它是面向切面编号的思想核心, AOP和OOP既面向对象的编程语言,不相冲突,它们是两个相辅相成的设计模式型 AOP技术弥补了面向对象编程思想的不足,spring aop是实现aop的一种技术,srping aop是spring框架中某个子框架或者子功能所依赖的核心. SPring的容器并不依赖于AOP 这意味着程序员可以自己选择是否使用aop技术,aop提供强大的中间件解决方案,这使用spring ioc容器更

spring之aop编程——基于注解、xml配置文件方式

AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充.spring中AOP的配置方式有2种方式:xml配置和AspectJ注解方式. 一.xml配置的方式: 1.service接口和服务类: package cn.edu.nuc.SpringTest.service; public interface DemoService { public String sayHello(String name) ; } packa

Spring完全基于Java和注解配置

要点: 配置继承WebApplicationInitializer的类作为启动类,相当于配置web.xml文件 使用@Configuration注解一个类,在类中的方式使用@Bean注解,则表名该方法的返回值为一个Bean,相应于配置applicationContext.xml等spring的xml配置文件 配置启动类 继承WebApplicationInitializer并重新onStartup方法,加载配置类,相当于配置web.xml文件 1 public class WebAppInitC

【Spring】AOP之基于XML配置总结与案例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.AOP的一些概念 AOP(Aspect-Oriented Programming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封装.继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合.当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力.也就是说,OOP允许你定义从上到下的关系,但

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

一. 通过注解配置bean 1.1       概述 相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,而且和MVC组件化开发的理念十分契合,是开发中常用的使用方式. 1.2       使用注解标识组件 ①普通组件:@Component:标识一个受Spring IOC容器管理的组件 ②持久化层组件:@Respository:标识一个受Spring IOC容器管理的持久化层组件 ③业务逻辑层组件:@Service:标识一个受Spring IOC容器管理的业务逻辑层组件 ④表述层控制

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

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/

spring框架学习(八)spring管理事务方式之注解配置

1.DAO AccountDao.java package cn.mf.dao; public interface AccountDao { //加钱 void increaseMoney(Integer id,Double money); //减钱 void decreaseMoney(Integer id,Double money); } AccountDaoImpl.java package cn.mf.dao; import org.springframework.jdbc.core.s

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分.Spring 为事务管理提供了丰富的功能支持.Spring 事务管理分为编程式和声明式的两种方式.编程式事务指的是通过编码方式实现事务:声明式事务基于 AOP,将具体业务逻辑与事务处理解耦.声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多.声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式.本文将着重介绍基于 @Transactional 注解的事务管