@SpringBootApplication 是spring boot的核心注解:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文,@EnableAutoConfiguration让spring boot根据类路径中的jar包依赖为当前项目进行自动配置。
@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@ControllerAdvice 顾名思义,@ControllerAdvice 就是@Controller 增强版。@ControllerAdvice 主要用来处理全 局数据 般搭配 @ExceptionHandler 进行最常见的使用场景就是全局异常处理、 @ModelAttribute 是一个全局数据 理组件, @InitBinder 使用。请求参数预处理,即将表单中 数据绑定到实体 类上时进行一些额外处理。
@CrossOrigin 接受跨域请求
@Aspect面向切面编程
pom 添加依赖
<!--面向切面编程的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@Component @Aspect public class LogAspect {
@Pointcut("execution(* su.su.Server.*.*(..))")
public void pc1(){
System.out.println("切入点");
}
@Before(value = "pc1()")
public void before(JoinPoint jp){
String name = jp.getSignature().getName();
System.out.println(name + "方法开始执行");
}
@After(value = "pc1()")
public void after(JoinPoint jp){
String name = jp.getSignature().getName();
System.out.println(name + "方法执行结束");
}
@AfterReturning(value = "pc1()", returning = "result")
public void afterReturning(JoinPoint jp,Object result){
String name = jp.getSignature().getName();
System.out.println(name +"方法执行结束返回值"+result);
}
@AfterThrowing(value = "pc1()", throwing = "result")
public void afterThrowing(JoinPoint jp,Exception result){
String name = jp.getSignature().getName();
System.out.println(name +"方法执行异常"+result.getMessage());
}
@Around("pc1()")
public Object around(ProceedingJoinPoint pjp) throws Throwable{
return pjp.proceed();
}
}
解释 pcl 方法使用了@Pointcut 主解,这是 个切入点定义。 execution 中的第一 个*表示方法返回任意值,第二个*表示 service 包下的任意类,第三个*表示类中的任意方法, 括号中的两个点表示方法参数任意, tip 这里描述的切入点为 service 包下所有类中的所有方 法。
@Before 注解,表示这是一个前直通知,该方法在目标方法执行 之前执行。通过 JoinPoint~支可以获取目标方法的方法名、 帅符等信息。
@After 注解,表示这是一个后直通知,该方法在目标方法执行 之后执斤。
@AfterReturning 主解,表示这是一个返回通知,在该方法中可 以获取目标方法的返回值 @AfterReturning 注解的 returning 参数是指返回值的变量名,对应 方法的参数。注意,在方法参数中定义了 result 的类型为 Object ,表示目标方法的返回值可 以是任意类型,若 result 参数的类型为 Long ,则该方法只能处理目标方法返回值为 Long 情况。
@ AfterThrowing 注 解, 表示这是一个异常通知 即当目标方法发生异常时,该方法会被调用,异常类型为 Exception 表示所有的异常都会进入该方法中执行若异常类型为ArithmeticException 则表示只有目标方法抛出的 ArithmeticException 异常 才会进入该方法中处理
@Around 注解,表示这是一个环绕通知 环绕通知是所有通知 里功能最为强大的通知,可以实现前直通知、后直通知、异常通知以及返回通知的功能,目 标方法进入环绕通知后 ,通过调用 ProceedingJoinPoint 对象的 proceed 方法使目标方法继续执行,开发者可以在此修改目标方法的执行参数、返回值等,并且可以在此处理目标方法的异