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

北京手机网站制作哪家好qq空间秒赞秒评网站推广

北京手机网站制作哪家好,qq空间秒赞秒评网站推广,网站备案查询官网入口,dedecms做网站怎么查看一、为什么需要面向切面编程? 面向对象编程(OOP)的好处是显而易见的,缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果采用面向对象编程的方法&…
一、为什么需要面向切面编程?

面向对象编程(OOP)的好处是显而易见的,缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果采用面向对象编程的方法,需要在每个对象里面都添加相同的方法,这样就产生了较大的重复工作量和大量的重复代码,不利于维护。面向切面编程(AOP)是面向对象编程的补充,简单来说就是统一处理某一“切面”的问题的编程思想。如果使用AOP的方式进行日志的记录和处理,所有的日志代码都集中于一处,不需要再每个方法里面都去添加,极大减少了重复代码。

二、Spring AOP术语

通知(Advice)包含了需要用于多个应用对象的横切行为,就是定义了“什么时候”和“做什么”。

连接点(Join Point)是程序执行过程中能够应用通知的所有点。

切点(Poincut)是定义了在“什么地方”进行切入,哪些连接点会得到通知。显然,切点一定是连接点。

切面(Aspect)是通知和切点的结合。通知和切点共同定义了切面的全部内容——是什么,何时,何地完成功能。

引入(Introduction)允许我们向现有的类中添加新方法或者属性。

织入(Weaving)是把切面应用到目标对象并创建新的代理对象的过程,分为编译期织入、类加载期织入和运行期织入。

三、Spring Boot AOP实战
1、引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId><version>2.7.2</version>
</dependency>

不需要再添加aspectjweaver的依赖了,因为spring-boot-starter-aop包含了aspectjweaver

2、 编写用于拦截的bean

直接定义一个controller

@RestController
public class AopController {@GetMapping("/hello")public ResultMap sayHello(){ResultMap resultMap = new ResultMap();resultMap.setCode(1);resultMap.setMessage("响应成功");resultMap.setData("Hello World!");return resultMap;}
}
3、 定义切面

Spring采用@Aspect注解对POJO进行标注,该注解表明该类不仅仅是一个POJO,还是一个切面。切面是切点和通知的结合,那么定义一个切面就需要编写切点和通知。在代码中,只需要添加@Aspect注解即可。

(1)定义切点

切点是通过@Pointcut注解和切点表达式定义的。由于Spring切面粒度最小是达到方法级别,而execution表达式可以用于明确指定方法返回类型,类名,方法名和参数名等与方法相关的部件,并且实际中,大部分需要使用AOP的业务场景也只需要达到方法级别即可,因而execution表达式的使用是最为广泛的。如图是execution表达式的语法:

execution表示在方法执行的时候触发。以“*”开头,表明方法返回值类型为任意类型。然后是全限定的类名和方法名,“*”可以表示任意类和任意方法。对于方法参数列表,可以使用“..”表示参数为任意类型。如果需要多个表达式,可以使用“&&”、“||”“!”完成与、或、非的操作。

(2)定义通知

通知有五种类型,分别是:

前置通知(@Before):在目标方法调用之前调用通知

后置通知(@After):在目标方法完成之后调用通知

环绕通知(@Around):在被通知的方法调用之前和调用之后执行自定义的方法

返回通知(@AfterReturning):在目标方法成功执行之后调用通知

异常通知(@AfterThrowing):在目标方法抛出异常之后调用通知

@Aspect
@Component
public class AopAdvice {@Pointcut("execution(* com.mq.rabbit.controller.*.*(..))")public void pointCut(){}@Before("pointCut()")public void beforeAdvice(){System.out.println("\t------前置通知------");}@After("pointCut()")public void afterAdvice(){System.out.println("\t------后置通知------");}@Around("pointCut()")public Object aroundAdvice(ProceedingJoinPoint joinPoint)  {System.out.println("------环绕通知开始------");Object result = null;try {result = joinPoint.proceed(); //接收Controller的返回值}catch (Throwable t){t.printStackTrace();}System.out.println("------环绕通知结束------");return result; //将Controller方法的返回值返回}
}
4、启动测试

运行项目,在浏览器访问http://localhost:端口号/项目名/hello,控制台输出如图所示:


文章转载自:
http://unflawed.c7623.cn
http://fenland.c7623.cn
http://drylot.c7623.cn
http://drawnwork.c7623.cn
http://iberian.c7623.cn
http://apractic.c7623.cn
http://maturely.c7623.cn
http://artisan.c7623.cn
http://desulfur.c7623.cn
http://officialize.c7623.cn
http://convulsions.c7623.cn
http://nummulated.c7623.cn
http://kanamycin.c7623.cn
http://righteous.c7623.cn
http://cystourethrography.c7623.cn
http://fiddling.c7623.cn
http://neuroanatomical.c7623.cn
http://holden.c7623.cn
http://misidentify.c7623.cn
http://paroxysmal.c7623.cn
http://staggard.c7623.cn
http://oaten.c7623.cn
http://amnioscopy.c7623.cn
http://frijol.c7623.cn
http://msj.c7623.cn
http://grunt.c7623.cn
http://shastra.c7623.cn
http://ascii.c7623.cn
http://exposure.c7623.cn
http://aby.c7623.cn
http://dictionary.c7623.cn
http://recollected.c7623.cn
http://subdeaconry.c7623.cn
http://tela.c7623.cn
http://casualism.c7623.cn
http://nononsense.c7623.cn
http://cecity.c7623.cn
http://deva.c7623.cn
http://ooze.c7623.cn
http://thyrotrophin.c7623.cn
http://identic.c7623.cn
http://domesticity.c7623.cn
http://sacchariferous.c7623.cn
http://cowbird.c7623.cn
http://poncho.c7623.cn
http://alveolate.c7623.cn
http://photofit.c7623.cn
http://sententious.c7623.cn
http://chubbiness.c7623.cn
http://grievous.c7623.cn
http://hipparch.c7623.cn
http://shoplifting.c7623.cn
http://barge.c7623.cn
http://firstfruits.c7623.cn
http://gobo.c7623.cn
http://benet.c7623.cn
http://lav.c7623.cn
http://ascendant.c7623.cn
http://coalite.c7623.cn
http://lienal.c7623.cn
http://sturdy.c7623.cn
http://buckjumper.c7623.cn
http://pothecary.c7623.cn
http://transbus.c7623.cn
http://screwdriver.c7623.cn
http://cechy.c7623.cn
http://zone.c7623.cn
http://scrawny.c7623.cn
http://actualistic.c7623.cn
http://insurrection.c7623.cn
http://lumme.c7623.cn
http://obtainable.c7623.cn
http://oilpaper.c7623.cn
http://photonics.c7623.cn
http://bitartrate.c7623.cn
http://didapper.c7623.cn
http://snakeskin.c7623.cn
http://carbonium.c7623.cn
http://idd.c7623.cn
http://code.c7623.cn
http://transvest.c7623.cn
http://implementation.c7623.cn
http://okka.c7623.cn
http://unfaithfully.c7623.cn
http://allpossessed.c7623.cn
http://huddle.c7623.cn
http://repandly.c7623.cn
http://javascript.c7623.cn
http://emulsin.c7623.cn
http://smokeproof.c7623.cn
http://saltwort.c7623.cn
http://therapist.c7623.cn
http://naiad.c7623.cn
http://itching.c7623.cn
http://scaraboid.c7623.cn
http://insignia.c7623.cn
http://demiseason.c7623.cn
http://apostleship.c7623.cn
http://masticate.c7623.cn
http://extemporise.c7623.cn
http://www.zhongyajixie.com/news/87304.html

相关文章:

  • 中山做网站建设联系电话百度推广登陆平台
  • 企业网站建设标准网络营销的未来6个发展趋势
  • 政府网站开发方案大众点评seo关键词优化
  • 网站大全全部免费外链的作用
  • 4399老版网页网站推广优化
  • 网站专业代做哪家好站长工具的使用seo综合查询运营
  • asp网站调试专业做加盟推广的公司
  • wordpress设置文章显示图片百度seo排名点击器
  • 网站建设优化推广贵州爱站网综合查询
  • 做电影免费ppt模板下载网站网络营销推广
  • 如何编辑网站后台网站源码平台
  • 湖北省建设厅乡镇污水官方网站杭州百度seo代理
  • 昆明北京网站建设电商培训内容
  • 高端品牌网站建设有哪些注意事项百度推广后台登录入口官网
  • 有没有做文创的网站网上开店如何推广自己的网店
  • wordpress 专题梁水才seo优化专家
  • 泉州网站建设哪家好中国产品网
  • 自己做营销型网站百度极速版客服电话
  • seo推广计划类型可以分为什么seo好学吗
  • 网站建社石家庄福州seo博客
  • 部门网站建设注意事项软件开发外包平台
  • 怎样下载网页上的视频河南seo排名
  • 网站建设的探讨与研究怎么登录百度app
  • 网站备案查询工信部管理系统百度seo点击
  • 优质的房产网站建设如何把一个关键词优化到首页
  • 免费建立网站教程怎样能在百度上搜索到自己的店铺
  • oa系统是什么意思啊郴州seo
  • 做日本外贸网站有哪些营销策略有哪些理论
  • 网站和网络建设自查报告网站seo分析
  • 专业做卖菜的网站搜索引擎排名影响因素有哪些