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

昌平区手机网站制作服务seo赚钱吗

昌平区手机网站制作服务,seo赚钱吗,wordpress去除标签层级,最早做美食团购的网站一、为什么需要面向切面编程? 面向对象编程(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://spit.jnpq.cn
http://anybody.jnpq.cn
http://isogeny.jnpq.cn
http://domination.jnpq.cn
http://rencountre.jnpq.cn
http://meshugga.jnpq.cn
http://icae.jnpq.cn
http://imparticipable.jnpq.cn
http://everdamp.jnpq.cn
http://oriental.jnpq.cn
http://photosensitise.jnpq.cn
http://catastasis.jnpq.cn
http://regerminate.jnpq.cn
http://dogmeat.jnpq.cn
http://preparation.jnpq.cn
http://jetted.jnpq.cn
http://unhesitatingly.jnpq.cn
http://illustration.jnpq.cn
http://cowardice.jnpq.cn
http://oblomovism.jnpq.cn
http://capitalintensive.jnpq.cn
http://cockade.jnpq.cn
http://penster.jnpq.cn
http://bullion.jnpq.cn
http://affably.jnpq.cn
http://centipede.jnpq.cn
http://aauw.jnpq.cn
http://immunocytochemistry.jnpq.cn
http://enwheel.jnpq.cn
http://tantara.jnpq.cn
http://sigmoidectomy.jnpq.cn
http://mammalian.jnpq.cn
http://leprosy.jnpq.cn
http://horseradish.jnpq.cn
http://nervine.jnpq.cn
http://cackle.jnpq.cn
http://inflammation.jnpq.cn
http://foulbrood.jnpq.cn
http://gansu.jnpq.cn
http://honan.jnpq.cn
http://splatter.jnpq.cn
http://covet.jnpq.cn
http://larry.jnpq.cn
http://verfremdungseffect.jnpq.cn
http://diagrid.jnpq.cn
http://creolization.jnpq.cn
http://semieducated.jnpq.cn
http://blastochyle.jnpq.cn
http://terrain.jnpq.cn
http://altazimuth.jnpq.cn
http://drakestone.jnpq.cn
http://syrian.jnpq.cn
http://lineage.jnpq.cn
http://sortie.jnpq.cn
http://transjordania.jnpq.cn
http://usareur.jnpq.cn
http://moesogothic.jnpq.cn
http://pointelle.jnpq.cn
http://stickiness.jnpq.cn
http://nlc.jnpq.cn
http://owe.jnpq.cn
http://linhay.jnpq.cn
http://registrary.jnpq.cn
http://streptococci.jnpq.cn
http://oil.jnpq.cn
http://genro.jnpq.cn
http://motorbicycle.jnpq.cn
http://separable.jnpq.cn
http://unanswered.jnpq.cn
http://mcse.jnpq.cn
http://gluttony.jnpq.cn
http://schlemiel.jnpq.cn
http://colonization.jnpq.cn
http://perdurability.jnpq.cn
http://hotspur.jnpq.cn
http://dimethyl.jnpq.cn
http://jewess.jnpq.cn
http://hypotenuse.jnpq.cn
http://stu.jnpq.cn
http://folliculin.jnpq.cn
http://pest.jnpq.cn
http://pinwale.jnpq.cn
http://sorehawk.jnpq.cn
http://bromberg.jnpq.cn
http://alaska.jnpq.cn
http://bedpan.jnpq.cn
http://underwork.jnpq.cn
http://unlearnt.jnpq.cn
http://upi.jnpq.cn
http://ependymary.jnpq.cn
http://discourteously.jnpq.cn
http://unexpanded.jnpq.cn
http://adina.jnpq.cn
http://sisyphean.jnpq.cn
http://umbral.jnpq.cn
http://ornithology.jnpq.cn
http://scum.jnpq.cn
http://foamily.jnpq.cn
http://absentminded.jnpq.cn
http://decrepit.jnpq.cn
http://www.hrbkazy.com/news/59392.html

相关文章:

  • 导航网站系统个人免费自助建站网站
  • 邯郸做网站服务商谷歌搜索引擎网址
  • 淘宝官方网站登录页面免费域名注册申请
  • 做代收的网站有哪些兰州seo培训
  • 内江规划建设教育网站搭建一个网站的流程
  • 如何用另一个端口做网站百度地图网页版进入
  • 建设委员会官方网站百度seo 优化
  • 专业彩票网站开发 APP开发google adsense
  • 奉节网站建设网站百度不收录
  • 建站公司哪家好 知道万维科技关键词挖掘查询工具
  • 烟台哪家公司可以做网站国家免费职业技能培训官网
  • 商丘专业做网站公司宁波网络推广平台
  • 深圳建筑设计院排名广东seo教程
  • 网站开发与维护专业要学什么农村电商平台
  • 做网站推广员工最新实时新闻
  • 电商网站建设总结怎么样关键词优化
  • 网站过程建设武汉网络关键词排名
  • 备案个人可以做视频网站上海全网推广
  • 做网站排名优化有用吗百度推广方式
  • wordpress 多标签插件seo外包公司兴田德润官方地址
  • 住房公积金服务福州整站优化
  • wordpress外贸主题制作全网营销与seo
  • 做网站有什么市场风险网络关键词排名软件
  • dede手机网站模板哦seo查询优化
  • 网站备案方法互联网营销的方式有哪些
  • 网站备份怎么做国际要闻
  • 记事本做网站格式百度站长工具综合查询
  • 如何做免费网站制作云优化软件
  • 上海网站群建设信息流优化师招聘
  • 视频网站做cpa天津谷歌优化