AOP
面向切面编程的思想,补充了面向对象的不足
对方法的增强,本质上就是在执行方法的前后添加功能
经典使用场景:统计性能分析、权限管理,事务管理,日志,缓存
好处: 让程序员更专注业务代码本身
切面: 本质上就是一个类
通知: 本质上就是一个方法,定义一些功能
前置通知@before
后置通知@after
环绕通知@around
@PointCut表示切点
@Aspect表示一个切面类
1.添加jar包
<!--添加aop依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
测试类
package cn.tedu.serive; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Service; @Service @Aspect//标记着这是一个aop的类:切面(由切点和组成)
public class AopAspect { //切点表达式: *表示1个 ..表示多个 *依次代表方法返回值,类名,方法名,(..)是参数列表 @Pointcut("execution( * cn.tedu.serive..*.*(..))") public void point (){} @Around("point()")//环绕通知 public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable{ long start = System.currentTimeMillis(); Object o = joinPoint.proceed();//执行你的业务方法 long end = System.currentTimeMillis(); System.out.println(end-start); String methodname = joinPoint.getTarget().getClass().getName()//获取类名 +"."+joinPoint.getSignature().getName();//获取方法名 return o; } }
3,测试
启动服务器 , 访问指定包 里的资源时 , 就会自动触发切面中通知的功能.
二,Ajax
–1,概述
全称 异步的js and xml ,
好处: 异步访问 , 局部刷新
–2,步骤
语法:axios.get(url).then( a=>( a表示服务器返回的结果 ) )
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<script src="axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="app">
{{info}}
</div>
<script type="text/javascript">
new Vue({
el:"#app",
data:{
info:"",
},
mounted:function(){
axios.get("http://localhost:8080/car/get").then(
a=>(
this.info=a.data
)
)
}
})
</script>
</body>
</html>
修改服务器的Controller代码
添加一个注解,@CrossOrigin //放行JS的请求–跨域的解决方案