当前位置: 首页 > news >正文

直播网站建设目的榆林市网站seo

直播网站建设目的,榆林市网站seo,智慧软文发布系统,承德网站建设设计本文介绍通过XML方式实现Spring AOP#xff0c;在上一篇中已经介绍了通过注解#xff0b;java配置的方式#xff0c;这篇文章主要是看XML中怎么配置#xff0c;直接上代码了#xff1a; 一、创建一个连接点 1⃣️定义接口 注意⚠️#xff1a;可以定义接口#xff0c;也…本文介绍通过XML方式实现Spring AOP在上一篇中已经介绍了通过注解java配置的方式这篇文章主要是看XML中怎么配置直接上代码了 一、创建一个连接点 1⃣️定义接口 注意⚠️可以定义接口也可以不定义定义接口时使用jdk动态代理不定义接口时使用cglib动态代理 1 //定义一个接口 2 public interface CoderProjectService { 3 public void getProjectInfo(CoderProject coderProject); 4 } 2⃣️接口实现类 1 //创建一个类来处理业务逻辑作为要织入切面中的被代理对象2 public class CoderProjectServiceImpl implements CoderProjectService {3 4 Override5 public void getProjectInfo(CoderProject coderProject) {6 System.out.println(项目名称 coderProject.getProjectName() 项目版本号: coderProject.getProjectVersion()7 项目描述 coderProject.getProjectDesc());8 }9 10 } 因为我要配置引入功能所以顺便定义要引入的接口及实现类 3⃣️创建引入接口 1 /* 2 * 定义一个新接口用来做一些验证 3 */ 4 public interface CheckExist { 5 public boolean checkIsEmpty(CoderProject project); 6 } 4⃣️引入接口实现类 1 /*2 * 定义一个类增加一些验证逻辑对被代理对象逻辑进行增强或完善3 */4 public class CheckExistImp implements CheckExist {5 6 Override7 public boolean checkIsEmpty(CoderProject project) {8 return project ! null;9 } 10 11 } 二、创建一个切面 1 /*2 * 定义一个切面没有任何注解需要在XML中进行配置3 */4 public class XmlAspect {5 6 // 引入增强类7 public CheckExistImp checkExistImp;8 9 public void before(CoderProject pro) { 10 System.out.println(项目名称  pro.getProjectName() before...); 11 } 12 13 public void around(ProceedingJoinPoint pjp) { 14 System.out.println(around before...); 15 try { 16 pjp.proceed(); 17 } catch (Throwable e) { 18 e.printStackTrace(); 19 } 20 System.out.println(around after...); 21 } 22 23 public void after() { 24 System.out.println(after...); 25 } 26 27 public void afterThrowing() { 28 System.out.println(afterThrowing...); 29 } 30 31 public void afterReturning() { 32 System.out.println(afterReturning...); 33 } 34 } 这个切面就是一个简单的类不过提供了四种通知的方法并且前置通知含有参数同时也将引入类作为属性添加进来之前的所有注解都会在XML文件中配置。 三、配置spring-aop-xml.xml配置文件 1 ?xml version1.0 encodingUTF-8?2 beans xmlnshttp://www.springframework.org/schema/beans3 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:aophttp://www.springframework.org/schema/aop4 xsi:schemaLocationhttp://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/aop 7 http://www.springframework.org/schema/aop/spring-aop.xsd8 !--定义切面bean --9 bean idxmlAspect classcom.hyc.aop.xml.XmlAspect/bean 10 !-- 定义被代理对象bean -- 11 bean idcoderProjectService classcom.hyc.aop.xml.CoderProjectServiceImpl/bean 12 !-- 定义切面的配置注解 -- 13 aop:config 14 aop:aspect refxmlAspect 15 !--定义一个切点 -- 16 aop:pointcut idgetProjectInfo expressionexecution(* com.hyc.aop.xml.CoderProjectServiceImpl.getProjectInfo(..)) / 17 !-- 定义四类通知-- 18 aop:before methodbefore pointcutexecution(* com.hyc.aop.xml.CoderProjectServiceImpl.getProjectInfo(..)) and args(pro))/ 19 aop:after methodafter pointcut-refgetProjectInfo/ 20 aop:after-returning methodafterReturning pointcut-refgetProjectInfo/ 21 aop:after-throwing methodafterThrowing pointcut-refgetProjectInfo/ 22 !-- 定义环绕通知 -- 23 aop:around methodaround pointcut-refgetProjectInfo/ 24 !--定义增强类 -- 25 aop:declare-parents types-matchingcom.hyc.aop.xml.CoderProjectServiceImpl implement-interfacecom.hyc.aop.xml.CheckExist default-implcom.hyc.aop.xml.CheckExistImp/ 26 /aop:aspect 27 /aop:config 28 29 !-- 定义一个project bean用来传给接入点方法 -- 30 bean idproject classcom.hyc.pojo.CoderProject 31 property nameid value1 / 32 property nameprojectName value云管理平台 / 33 property nameprojectVersion valueV1.0 / 34 property nameprojectDesc value云存储管理平台 / 35 /bean 36 /beans 注意⚠️在使用aop配置之前要先引入相关的命名空间如上面代码中的红色加粗部分。 其他的配置及含义都在注释中有接受不再赘述 四、创建测试方法 1 Test2 public void testAopByXml() {3 // 动态生成切面4 ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(classpath*:spring-aop-xml.xml);5 // 获取被代理对象6 CoderProjectService coderProjectService (CoderProjectService) context.getBean(coderProjectService);7 // 获取项目类参数8 CoderProject project (CoderProject) context.getBean(project);9 // 获取增强类将被代理对象强制转化成增强类 10 CheckExist cd (CheckExist) coderProjectService; 11 if (cd.checkIsEmpty(project)) { 12 coderProjectService.getProjectInfo(project); 13 } else { 14 System.out.println(被代理对象不能为空); 15 } 16 } 测试结果如下 1 项目名称 云管理平台before... 2 around before... 3 项目名称云管理平台项目版本号:V1.0项目描述云存储管理平台 4 around after... 5 afterReturning... 6 after... 可以看到按照Sprinf AOP规定的流程执行了方法但是就如在上一篇文章中提到的使用XML方式时around的before方法会在before方法之后执行。 其实从实现过程就能看出来注解方式比XML要简单因为XML要配置很多东西而且容易出错所以一般来说以注解为主XML为辅。转载于:https://www.cnblogs.com/hellowhy/p/9721258.html
http://www.sadfv.cn/news/286633/

相关文章:

  • 简单的网站设计图东莞网站建设 石化
  • 手机在线画图工具seo外包如何
  • 公司网站设计用什么seo资讯推推蛙
  • 有域名有空间怎么做网站一个做网站编程的条件
  • 深圳网站外包公司设计公司取名大全最新版的
  • 东莞市天英网络技术有限公司杭州网站优化排名
  • 网站建设的软件是哪个好网络推广和网络运营
  • 温州网页网站制作天猫网店代运营
  • 如何创建一个免费网站wordpress汉字注册
  • 长沙移动网站建设哪家好网站创建人
  • 英文版网站案例南京做网站价格
  • 怎么做网站后期推广平面设计接单软件
  • 怎么建设一个外国网站榆林免费做网站公司
  • 那个网站做租赁好两个wordpress数据同步
  • 好的建筑设计网站推荐建站平台功能结构图
  • 白酒营销网站wordpress单号管理系统
  • 郑州做食用菌配送的网站做网站算 自由职业者
  • 互联网情况下做企业网站的有点企业管理培训课程感想
  • 彩票网站搭建 做网站济南建设银行网站
  • 珠宝商城网站设计重庆网站设计哪家公司好
  • 大型网站快速排名百度引擎入口
  • 企业如何在自己的网站上做宣传小程序代理加盟有哪些大品牌
  • 淘宝二官方网站是做啥的局网站建设意见
  • 旅游网站后台管理系统电商网站建设目的
  • 浅谈全球五金网电子商务网站建设app开发费用大概多少
  • wordpress获取文章图片wordpress 数据库优化插件
  • 汕头模板做网站dw手机网站建设
  • 做图赚钱的网站有哪些aws网站建设
  • 网站建设pdf下载中英文版网站是怎么做的
  • 德州市建设小学网站公司做网站的优势