人才网网站建设方案,网站seo诊断工具,信息产业部互联网网站管理工作细则,营销培训内容有哪些文章目录前言一、准备工作1、添加相应的依赖2、添加相应的命名空间3、创建目标类4、创建切面二、使用AOP1.在切面类中编写增强代码以及切点表达式2、开启aspectj的自动代理3、测试类4、测试结果前言
Spring对AOP的实现包括以下三种方式 1、Spring框架结合AspectJ框架实现的AOP…
文章目录前言一、准备工作1、添加相应的依赖2、添加相应的命名空间3、创建目标类4、创建切面二、使用AOP1.在切面类中编写增强代码以及切点表达式2、开启aspectj的自动代理3、测试类4、测试结果前言
Spring对AOP的实现包括以下三种方式 1、Spring框架结合AspectJ框架实现的AOP基于注解方式。 2、Spring框架结合AspectJ框架实现的AOP基于XML方式。 3、Spring框架自己实现的AOP基于XML配置方式 实际开发中都是SpringAspectJ来实现AOP 一、准备工作
1、添加相应的依赖
dependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.5.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion5.2.5.RELEASE/version/dependency/dependencies2、添加相应的命名空间
spring.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
/beans3、创建目标类
UserService
package com.powernode.spring.service;
import org.springframework.stereotype.Service;
Service(userservice) //将这个类纳入spring容器管理
public class UserService { //目标类public void login(){ //目标方法System.out.println(系统正在进行身份认证....);}
}4、创建切面
LogAspect
package com.powernode.spring.service;import org.springframework.stereotype.Service;
Aspect //切面类是需要Aspect注解进行标注的
Service(logAspect) //将这个类纳入spring容器管理
public class LogAspect { //切面//切面通知增强代码切点方法
}将切面和目标类纳入spring容器管理在spring.xml中需要进行组件扫描 context:component-scan base-packagecom.powernode.spring.service/context:component-scan
二、使用AOP
1.在切面类中编写增强代码以及切点表达式
Service(logAspect) //将这个类纳入spring容器管理
Aspect //切面类是需要Aspect注解进行标注的
public class LogAspect { //切面//切面通知增强代码切点方法//通知就是增强就是具体的要编写的代码//这里通知Advice 以方法的形式出现//Before(切点表达式 确定在哪里进行切入)标注的方法就是一个前置通知在目标类的目标方法执行之前执行Before(execution(* com.powernode.spring.service.UserService.* (..)))public void beforeAdvice(){System.out.println(我是一个通知我是一段增强代码……);}
}2、开启aspectj的自动代理
!--开启aspectj的自动代理--!--spring容器在扫描类的时候查看该类上是否有Aspect注解如果有给切入点表达式涉及的类的对象创建代理对象--!--proxy-target-class true 表示强制使用CGLib动态代理proxy-target-class false 这是默认值 表示接口使用JDK动态代理--aop:aspectj-autoproxy proxy-target-classtrue /3、测试类
Testpublic void testBefore(){ApplicationContext ac new ClassPathXmlApplicationContext(spring.xml);UserService userservice (UserService) ac.getBean(userservice);userservice.login();}4、测试结果