`
hongmeikaile
  • 浏览: 116429 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

AOP中的注解自动装配通知

阅读更多

 

AOP中的注解自动装配通知

 

 

 

 一、创建一个注解类:

 

注意:aop的引入

package cn.csdn.util;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class ServiceImpl implements Service {

	/**
	 * @Before("execution(* work())")方法中的第一个参数“*”是返回值,第二个参数“work()”是方法的名
	 * */
	@Before("execution(* goWork())")
	public void eat(JoinPoint jp) {
		// TODO Auto-generated method stub
		System.out.println("I'm eating!!!");
		/*
		 * 输出的结果是: I'm eating!!! 我正在工作!
		 */
	}

	/**
	 * After(execution(*
	 * cn.csdn.service.Emp*.*(..)))方法的第一个参数(*)是返回值,第二个参数是位于cn.csdn.service
	 * 包下的前缀是Emp的类的所有方法,((..))代表的是方法的参数可以是可变的参数
	 * */
	@After("execution(* cn.csdn.service.Emp*.*(..))")
	public void goCompany() {
		// TODO Auto-generated method stub
		System.out.println("I want to go home");
	}
/**
 * 总结返回值有void和*两种,方法的名字的表示方式有直接写方法的名字、写出那个类的哪个方法或类和方法的名字模糊匹配*/
	@AfterThrowing(pointcut = "execution(* *..EmpService*.*(..))", throwing = "ex")
	public void leave(Exception ex) {
		// TODO Auto-generated method stub
		System.out.println("I want leav");
	}

	@Before("execution(* cn.csdn.service.EmpServiceImpl.*(..))")
	public void goHome() {
		// TODO Auto-generated method stub
		System.out.println("I want go Home");

	}

	@Around("execution(* *..Emp*.goWork(..))")
	public void signIn() {
		// TODO Auto-generated method stub
		System.out.println("I around before");
		System.out.println("I around after");

	}

}

 

xml中的部分代码如下:

<beans xmlns="http://www.springframework.org/schema/beans"	
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	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/aop 
	http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
	 >

	<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl"/>
	<bean id="serviceImpl" class="cn.csdn.util.ServiceImpl"></bean>	
	<aop:aspectj-autoproxy/>

</beans>
  源代码如下:

 

分享到:
评论

相关推荐

    [干货][EMIT]千行代码实现代理式AOP+属性的自动装配

    【干货分享】代理式AOP(面向切面编程)与属性自动装配是现代软件开发中的重要技术,尤其在企业级应用开发中广泛使用。本文将通过千行代码的实例解析,帮助你深入理解并掌握这两种技术。AOP主要用于解决代码中的横切...

    sping aop注解配置

    5. **通知的装配**:使用`@Aspect`注解的类需要被Spring容器管理。可以通过`@Component`注解或在XML配置中声明它。然后,通过`@EnableAspectJAutoProxy`启用Spring AOP并创建代理。 6. **切点与通知的关联**:使用`...

    AOP基于注解配置.zip

    7. **实战演练**:在`spring-demo24-AOP-全注解配置.zip`和`spring-demo23-AOP-注解配置.zip`这两个示例中,你可以看到完整的AOP注解配置。通常会包含创建切面类、定义通知方法、编写切入点表达式,以及在主配置类中...

    以注解方式模拟Spring IoC AOP

    当需要注入依赖时,容器可以解析注解并自动装配。 ```java // 自定义@Component注解 @Retention(RetentionPolicy.RUNTIME) @interface Component {} // 自定义容器类 class SimpleContainer { private Map, ...

    spring注解方式实现aop

    在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限...希望本教程对理解和应用Spring AOP注解方式有所帮助,实践中不断探索和优化,将能更好地发挥AOP的优势。

    Spring Aop之AspectJ注解配置实现日志管理的方法

    Spring Aop之AspectJ注解配置实现日志管理的方法 Spring Aop是基于AspectJ实现的面向切面编程(AOP),它提供了一个灵活的方式来实现...例如,在上面的代码中,使用`@Autowired`注解来自动装配SysLogService Bean。

    spring注解aop demo

    Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...

    java aop、ioc 、注解 实例 Demo

    Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...

    以注解方式模拟Spring_IoC,AOP

    在Spring AOP中,我们通过定义切面(Aspect)、通知(Advice)、切入点表达式(Pointcut Expression)等元素来实现切面编程。 1. `@Aspect`:标记一个类为切面,其中包含通知方法。例如: ```java @Aspect ...

    spring自动装配项目struts2

    在这个"spring自动装配项目struts2"中,我们将探讨如何整合Spring的自动装配特性与Struts2框架,以及Hibernate作为持久层框架的使用。 首先,让我们了解Spring的自动装配(Auto-Wiring)。自动装配是Spring框架的...

    Spring4--2.bean注解和AOP

    3. `@Autowired`:这个注解用于自动装配Bean的依赖。Spring会根据类型或名称找到合适的Bean进行注入。例如: ```java @Service public class MyService { @Autowired private MyDependency myDependency; // ... ...

    仿springAOP框架

    在仿Spring AOP框架中,你可以定义各种通知方法,比如在方法执行前记录日志的前置通知,或者在方法执行后执行清理工作的后置通知。 **装配和代理**也是AOP的关键部分。在Spring AOP中,装配是指将切面应用到目标...

    【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现

    在这个场景中,Spring Boot为我们提供了强大的环境配置能力和自动装配功能,使得我们可以轻松地集成和管理YAML文件。 ##### 2. YAML配置文件 YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,...

    Spring_集合(List_Map_Set)_自动装配

    在Spring框架中,集合(List, Map, Set)的自动装配是一项重要的功能,它极大地简化了对象之间的依赖关系处理。...在实际项目中,结合Java注解和XML配置,可以灵活地控制bean的创建和装配,实现高效、可维护的软件架构。

    Spring AOP完整例子

    在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型、组装切面以及使用JUnit4进行测试。 首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处...

    springAOP演示例子

    这可以通过在XML配置文件中添加 `&lt;aop:config&gt;` 或者在Java配置类中使用 `@EnableAspectJAutoProxy` 注解来完成。一旦配置完成,Spring会自动创建代理对象,当调用被通知的方法时,代理对象会执行相应的通知。 总结...

    spring中注解的实现原理

    在AOP方面,`@Aspect`、`@Before`、`@After`、`@Around`和`@Pointcut`等注解用于定义切面和通知。Spring AOP代理会在运行时动态生成增强的类,以实现切面的功能。代理可以是JDK动态代理或CGLIB代理,取决于目标bean...

    spring AOP 引入jar包,spring IOC 引入Jar包

    5. **自动装配(Auto-Wiring)**:容器可以根据 Bean 的名称、类型或注解自动为 Bean 注入依赖,减少手动配置。 6. ** Profiles**:允许根据不同的环境(如开发、测试、生产)配置不同的 Bean。 7. **泛型集合注入...

    springboot源码解析(二):自动装配原理1

    此外,`META-INF/spring.factories`文件在自动装配中也扮演重要角色。该文件包含了一系列自动配置类的列表,Spring Boot在启动时会读取这个文件,加载其中列出的自动配置类。 总的来说,Spring Boot的自动装配原理...

Global site tag (gtag.js) - Google Analytics