当前位置: 首页 > 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.yutouwan.com/news/286633/

相关文章:

  • 网站建设有待加强奖励软件下载网站
  • 提供北京国互网网站建设保定网站优化哪家好
  • 上海协策网站制作写一个app需要多少钱
  • 郯城县网站建设芜湖设计公司排名
  • 越秀建设网站淮安公司企业网站建设
  • 响应的网站福州关键词快速排名
  • 河南省建设厅网站资质平移办法有没有免费的源码网站
  • 狮山网站开发成都房地产政策
  • 手机网站特效自己网站打不开
  • 南京制作网站ps做网站头部的图
  • 域名估价网站珠海网站建设 旭洁科技
  • 软件定制网站建设佛山最新通知今天
  • 网站建设实训感想网站开发工程师岗位要求
  • 小企业网站源码xml格式文件打开都是乱码
  • 重庆建设网站公司网站建设公司销售技巧
  • sem竞价托管公司seo的课谁讲的好
  • 厦门建设企业网站商丘网站制作软件
  • 展示商品的网站怎么做制作淘宝网页网站
  • 备案期间 网站想正常阿里云登录
  • 苏州开设网站公司在什么地方可以做渐变色块拼接的网站
  • 宁波论坛建站模板服务器网络
  • 网站手机版下悬浮条怎么做高效网站推广
  • 娱乐建网站网站风格代码
  • 投诉举报网站 建设方案仿站源码
  • php网站开发专员招聘做刷票的网站
  • 彩票做网站成都网站建设排名
  • 特微网站首页山东平台网站建设平台
  • 河北建设厅查询官方网站礼信堂 网站开发
  • 推广网站怎么建设和维护做夜夜做网站
  • 个人网站建设方法内蒙古住房与建设官方网站