1 三种跨域
- CORS, Cross-Origin Resource Sharing
- 域:协议 + 域名/IP + 端口
- 2个工程


1.1 方法1


1.2 方法2

1.3 方式3

2 spring boot 导入 XML配置




3 拦截器
作用:
- 日志记录
- 权限检查
- 性能监控

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description TODO
* @Author tzb
* @Date 2021/8/15 21:32
* @Version 1.0
**/
public class MyInterceptor implements HandlerInterceptor {
/**
* 方法返回 false ,方法不再继续
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("进入 preHandler ");
return true;
}
/**
* Controller 执行之后被调用
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
/**
* 整个请求执行结束后,可以做一些资源清理工作
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}

-
测试1


-
测试2


4 系统启动任务
4.1 CommandLineRunner




4.2 ApplicationRunner
@Component
@Order(98)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
//获取没有键的参数,获取的参数和CommandLineRunner 一样
List<String> nonOptionArgs = args.getNonOptionArgs();
System.out.println("nonOptionArgs1 = " + nonOptionArgs);
Set<String> optionNames = args.getOptionNames();
for (String optionName : optionNames) {
System.out.println(optionNames + "1->" + args.getOptionValues(optionName));
}
// 获取命令行中的所有参数
String[] sourceArgs = args.getSourceArgs();
System.out.println("sourceArgs1 = " + Arrays.toString(sourceArgs));
}
}
@Component
@Order(97)
public class MyApplicationRunner2 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
//获取没有键的参数,获取的参数和CommandLineRunner 一样
List<String> nonOptionArgs = args.getNonOptionArgs();
System.out.println("nonOptionArgs2 = " + nonOptionArgs);
Set<String> optionNames = args.getOptionNames();
for (String optionName : optionNames) {
System.out.println(optionNames + "2->" + args.getOptionValues(optionName));
}
// 获取命令行中的所有参数
String[] sourceArgs = args.getSourceArgs();
System.out.println("sourceArgs2 = " + Arrays.toString(sourceArgs));
}
}

本文详细介绍了SpringBoot中如何通过CORS解决跨域问题,包括三种方法的实现,并探讨了HandlerInterceptor在日志记录、权限检查和性能监控中的应用。还涉及了两个不同类型的工程实践以及`CommandLineRunner`和`ApplicationRunner`的使用。

被折叠的 条评论
为什么被折叠?



