本文用于知识点的简单总结。
对于Spring中AOP的配置,第二种方式是基于@AspectJ风格的注解方式,相关配置项在代码中定义。以下主要通过代码说明基本配置流程。
(1)定义需要实现的业务接口:
package com.aop.service;
public interface MyService {
public void sayHello(String word);
}
(2)编写实现接口的业务类:
package com.aop.service;
public class MyServiceImpl implements MyService {
@Override
public void sayHello(String word) {
System.out.println("Say :" + word);
}
}
(3)切点、切面、通知等相关配置:
package com.aop.aspect;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
//切面声明
@Aspect
public class MyAspectJ {
//切点声明
@Pointcut(value = "execution(* com.aop.service..*.*(..))&& args(param)", argNames = "param")
public void MyPointCut(String param) {
}
//前置通知声明
@Before(value = "MyPointCut(param)", argNames = "param")
public void beforeAdvice(String param) {
System.out.println("--before advice,param:" + param);
}
}
(4)xml配置文件:
<?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/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 开启 @AspectJ 风格的切面声明 -->
<aop:aspectj-autoproxy />
<!-- 接口实现业务类 -->
<bean id="MyService" class="com.aop.service.MyServiceImpl" />
<!-- 切面定义类,包含切点、切面、通知等相关配置 -->
<bean id="MyAspectJ" class="com.aop.aspect.MyAspectJ" />
</beans>
(5)测试类:
package com.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.aop.service.MyService;
public class TestAop {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("aspectJAop.xml");
MyService service = (MyService) context.getBean("MyService");
service.sayHello("Spring aop");
}
}
(6)输出结果:
--before advice,param:Spring aop
Say :Spring aop
分享到:
相关推荐
在压缩包文件"spring-aop-aspectj"中,可能包含了关于Spring AOP和@AspectJ的示例代码或文档,可以帮助你进一步理解和实践这些知识。通过学习和实践,你将能更好地掌握这一强大的工具,从而在你的IT职业生涯中征服...
`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的Spring AOP应用程序。 通过以上内容,我们可以...
@AspectJ是Spring支持的一种AOP实现,它使用注解来定义切面,简化了配置过程。 创建一个Spring AOP应用的第一步是设置项目结构。在给定的压缩包文件中,我们可能看到一个名为"src"的目录,通常这个目录包含项目的源...
基于代理的织入通常用于Spring的IoC容器中的bean,而基于字节码的织入则是在运行时通过ASM库动态修改类的字节码来实现,这正是@AspectJ所采用的方式。 @AspectJ是Spring AOP的一个扩展,它提供了一种更接近传统编程...
Spring AOP的实现基于动态代理,对于接口实现类,它使用Java的`java.lang.reflect.Proxy`类来创建代理对象;对于没有接口的类,Spring使用CGLIB库生成子类。在运行时,Spring AOP会根据切面定义生成代理对象,然后...
一个基于@AspectJ的spring2.0 AOP应用实例,很小很简单,没有任何额外信息,最适合AOP入门学习。使用log4j打印信息。把项目直接import进myeclipse就可以使用啦......
在Java世界中,Spring框架以其强大的功能和灵活性深受开发者喜爱,尤其在面向切面编程(AOP)方面,Spring提供了两种主要的实现方式:XML配置和@AspectJ注解。本篇文章将深入探讨这两个版本的AOP实现,并结合源码...
2. **配置AspectJ**:在Spring的配置文件中启用AspectJ自动代理,可以通过`<aop:aspectj-autoproxy>`标签来实现。 3. **定义切面**:创建一个Java类作为切面,该类需要使用`@Aspect`注解。在切面类中,我们可以定义...
Spring 提供了两种主要的 AOP 实现方式:基于代理的和基于 AspectJ 的。基于代理的方式是 Spring 默认的实现,它通过 JdkDynamicProxy 或 CGLIB 创建代理对象来实现切面。而基于 AspectJ 的方式则更为强大,它允许...
spring5基于aspectj实现aop操作所需jar包 com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.ar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aspects-5.2.6....
博文链接:https://log-cd.iteye.com/blog/213445
本教程将探讨如何在Spring中结合AspectJ实现AOP,包括基于XML配置和基于注解的方式。 **一、AOP基本概念** AOP的核心概念有切面(Aspect)、连接点(Join Point)、通知(Advice)、切点(Pointcut)和引入...
为了在Spring应用中使用AspectJ,我们需要在配置文件中启用AspectJ自动代理,并添加相关的依赖。例如,在Spring XML配置中: ```xml <aop:aspectj-autoproxy /> ``` 同时,在Maven或Gradle构建工具中引入AspectJ...
总结来说,基于@AspectJ的AOP使得在Web开发中可以方便地实现横切关注点,将业务逻辑与辅助功能(如日志、事务处理)分离,提高了代码的模块化程度和可维护性。通过注解和XML配置,我们可以轻松地定义和应用切面,...
标题提到的"Spring 使用AspectJ 实现 AOP之前置通知小例子",指的是利用AspectJ在Spring中实现AOP的一种特定类型的通知——前置通知(Before advice)。前置通知在目标方法执行之前运行,但不会阻止方法的执行。这种...
Spring的AOP(面向切面编程)是一种强大的编程模型,它允许程序员在不修改源代码的情况下,通过插入额外的...在Spring4.3.7版本中,AspectJ的集成进一步完善了Spring的AOP框架,为开发者提供了更丰富的工具和可能性。