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>
源代码如下:
分享到:
相关推荐
【干货分享】代理式AOP(面向切面编程)与属性自动装配是现代软件开发中的重要技术,尤其在企业级应用开发中广泛使用。本文将通过千行代码的实例解析,帮助你深入理解并掌握这两种技术。AOP主要用于解决代码中的横切...
5. **通知的装配**:使用`@Aspect`注解的类需要被Spring容器管理。可以通过`@Component`注解或在XML配置中声明它。然后,通过`@EnableAspectJAutoProxy`启用Spring AOP并创建代理。 6. **切点与通知的关联**:使用`...
7. **实战演练**:在`spring-demo24-AOP-全注解配置.zip`和`spring-demo23-AOP-注解配置.zip`这两个示例中,你可以看到完整的AOP注解配置。通常会包含创建切面类、定义通知方法、编写切入点表达式,以及在主配置类中...
当需要注入依赖时,容器可以解析注解并自动装配。 ```java // 自定义@Component注解 @Retention(RetentionPolicy.RUNTIME) @interface Component {} // 自定义容器类 class SimpleContainer { private Map, ...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员定义横切关注点,如日志、事务管理、权限...希望本教程对理解和应用Spring AOP注解方式有所帮助,实践中不断探索和优化,将能更好地发挥AOP的优势。
Spring Aop之AspectJ注解配置实现日志管理的方法 Spring Aop是基于AspectJ实现的面向切面编程(AOP),它提供了一个灵活的方式来实现...例如,在上面的代码中,使用`@Autowired`注解来自动装配SysLogService Bean。
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...
在Spring AOP中,我们通过定义切面(Aspect)、通知(Advice)、切入点表达式(Pointcut Expression)等元素来实现切面编程。 1. `@Aspect`:标记一个类为切面,其中包含通知方法。例如: ```java @Aspect ...
在这个"spring自动装配项目struts2"中,我们将探讨如何整合Spring的自动装配特性与Struts2框架,以及Hibernate作为持久层框架的使用。 首先,让我们了解Spring的自动装配(Auto-Wiring)。自动装配是Spring框架的...
3. `@Autowired`:这个注解用于自动装配Bean的依赖。Spring会根据类型或名称找到合适的Bean进行注入。例如: ```java @Service public class MyService { @Autowired private MyDependency myDependency; // ... ...
在仿Spring AOP框架中,你可以定义各种通知方法,比如在方法执行前记录日志的前置通知,或者在方法执行后执行清理工作的后置通知。 **装配和代理**也是AOP的关键部分。在Spring AOP中,装配是指将切面应用到目标...
在这个场景中,Spring Boot为我们提供了强大的环境配置能力和自动装配功能,使得我们可以轻松地集成和管理YAML文件。 ##### 2. YAML配置文件 YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,...
在Spring框架中,集合(List, Map, Set)的自动装配是一项重要的功能,它极大地简化了对象之间的依赖关系处理。...在实际项目中,结合Java注解和XML配置,可以灵活地控制bean的创建和装配,实现高效、可维护的软件架构。
在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型、组装切面以及使用JUnit4进行测试。 首先,我们需要理解Spring AOP的基础概念。AOP的核心是切点(Pointcut),它定义了关注点在何处...
这可以通过在XML配置文件中添加 `<aop:config>` 或者在Java配置类中使用 `@EnableAspectJAutoProxy` 注解来完成。一旦配置完成,Spring会自动创建代理对象,当调用被通知的方法时,代理对象会执行相应的通知。 总结...
在AOP方面,`@Aspect`、`@Before`、`@After`、`@Around`和`@Pointcut`等注解用于定义切面和通知。Spring AOP代理会在运行时动态生成增强的类,以实现切面的功能。代理可以是JDK动态代理或CGLIB代理,取决于目标bean...
5. **自动装配(Auto-Wiring)**:容器可以根据 Bean 的名称、类型或注解自动为 Bean 注入依赖,减少手动配置。 6. ** Profiles**:允许根据不同的环境(如开发、测试、生产)配置不同的 Bean。 7. **泛型集合注入...
此外,`META-INF/spring.factories`文件在自动装配中也扮演重要角色。该文件包含了一系列自动配置类的列表,Spring Boot在启动时会读取这个文件,加载其中列出的自动配置类。 总的来说,Spring Boot的自动装配原理...