Spring Boot
文章平均质量分 66
tomorrow.hello
这个作者很懒,什么都没留下…
展开
-
SpringBoot全局设置请求路径增加前缀
1.增加自定义注解ApiRestController2. 替换@RestController到注解@ApiRestController3. 配置WebMvcConfigurer@Component@Overrideconfigurer。原创 2024-05-17 22:56:18 · 2120 阅读 · 0 评论 -
OpenApi 接口文档
Bean.name("许可协议").description("csdn博客")@Bean.build();秒懂SpringBoot之如何集成SpringDoc(全网目前最新最系统最全面的springdoc教程) - 知乎。原创 2024-05-17 21:20:36 · 899 阅读 · 0 评论 -
SpringBoot中的HttpServletRequest
javax..http.HttpServletRequest是SUN制定的Servlet规范,是一个接口,表示请求, 其父接口是 javax.servlet.ServletRequest。“ HTTP 请求协议”的完整内容都被封装到 request对象中。原创 2024-03-13 23:16:33 · 2114 阅读 · 0 评论 -
SpringBoot 过滤器,Servlet,拦截器,监听器
在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在service或者一个方法前,调用一个方法,或者在方法后,调用一个方法。拦截器是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象,例如 Service对象、数据源、事务管理等,通过IoC注入到拦截器即可。在Spring构架的程序中,要优先使用拦截器。监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。原创 2024-02-29 22:51:49 · 634 阅读 · 0 评论 -
SpringBoot 使用Mock单元测试
测试一般分为两种黑盒测试和白盒测试。黑盒测试又称为功能测试或数据驱动测试,测试过程中,程序看作成一个黑色盒子,看不到盒子内部代码结构。白盒测试又称为结构测试或逻辑驱动测试,测试过程中,程序看作一个透明盒子,能够看清盒子内部的代码和结构,这样测试人员对程序代码的逻辑有所知晓。原创 2024-02-29 20:25:06 · 1742 阅读 · 0 评论 -
Spring Boo退出时执行方法
SpringApplication会向JVM注册一个关闭钩子(hook),以确保ApplicationContext在退出时正常关闭。可以使用所有标准的Spring生命周期回调(例如DisposableBean接口或@PreDestroy注解)。原创 2023-03-31 23:15:17 · 1008 阅读 · 1 评论 -
SpringBoot读取Resources文件
SpringBoot读取文件一般分为两种,一种是获取文件对象(File/URL)另一种是获取文件的流。原创 2023-03-31 22:58:58 · 1953 阅读 · 0 评论 -
RestTemplate连接池
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive.在使用长连接的情况下,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。原创 2023-03-31 22:37:50 · 3669 阅读 · 0 评论 -
Spring Boot 远程调用(HTTP)
使用JDK 1.8中自带的rt.jar包中的java.net中的HttpURLConnection。原创 2023-03-02 22:19:14 · 1105 阅读 · 0 评论 -
Springboot 多线程安全
默认下Springboot注入的对象都是单例的,对于全局的共享变量它是线程不安全的(除了注入的HttpServletRequest的对象,它是线程安全的。原创 2022-12-07 22:48:14 · 3085 阅读 · 0 评论 -
SpringBoot 获取HttpServletRequest
方式二:通过RequestContextHolder手动获取RequestContextHolder内部是使用ThreadLocal来维护Request的,线程间隔离,所以不存在线程安全问题,这样使用是没有问题的。tomcat是多线线程的,通过@Autowired注入的Request对象虽然看起是一个全局的共享变量,但是它实际上却是线程安全的。Spring底层通过一个代理对象让客户端去操作了ThreadLocal中的request,即每个线程都只操作自己的request,是线程隔离的,所以原创 2022-12-07 22:34:50 · 4809 阅读 · 0 评论 -
springboot 四大组件
starter包的内容就是pom文件,就是一个依赖传递包。帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况.这些Starters作为Spring相关技术的引导过程,我们 不再需要担心,它们将由Spring Boot Starters自动管理。原创 2022-11-17 23:00:59 · 5474 阅读 · 2 评论 -
SpringBoot 定时器和多线程(1) -异步实现方式
Schedule创建的定时任务默认单线程的同步执行,虽然可以通过SchedulingConfigurer指定线程的个数,但是当代码运行起来时还是同步执行,同一个调度任务还需要阻塞等待上一次任务执行完成之后才能继续执行下一次任务。不同调度任务也是同一样的,需要阻塞等待上一个调度任务完成之后,才可以继续执行下一个调度任务。所以我们需要开始定时器的多线程异步执行。原创 2022-10-02 10:24:07 · 2588 阅读 · 0 评论 -
SpringBoot 定时器和多线程(2)-定时器实现
springboot 创建定时器有两种方式一种是使用@EnableScheduling和@Scheduled注解,一种是使用SchedulingConfigurer配置,将定时任务创建出来。原创 2022-10-01 23:13:25 · 8162 阅读 · 0 评论 -
springboot 给controller路径增加前缀
springboot-web在访问的时,全局增加访问前缀,需要自定义配置。如果使用webmvc需要实现WebMvcConfigurer的配置类并实现configurePathMatch方法,如果使用webfulx需要继承WebFluxConfigurer并实现configurePathMatching方式。2.2 webfulx下配置2.局部配置(只修改部分)2.1 自定义注解2.2controller上增加注解使用2.2修改WebMvcConfigurer配置原创 2022-10-01 16:11:53 · 2616 阅读 · 0 评论 -
SpringWebmvc和SpringWebflux
struts2,springmvc等都是基于Servlet API与Servlet容器基础之上运行的,在Servlet3.1之后才有了异步非阻塞的支持。而WebFlux是一个典型非阻塞异步的框架,它的核心是基于Reactor的相关API实现的。相对于传统的web框架来说,它可以运行在诸如Netty,Undertow及支持Servlet3.1的容器上,因此它的运行环境的可选择行要比传统web框架多的多。SpringMVC采用命令式编程方,而WebFlux则是基于异步响应式编程。原创 2022-10-01 14:46:42 · 2938 阅读 · 0 评论 -
SpringBoot 内嵌容器
jetty和undertow都是基于NIO实现的高并发轻量级的服务器,支持servlet3.1和websocket。NIO(非阻塞式输入输出,四个步骤Channel,Selector,Buffer。Acceptor)。Client和Server只向Buffer读写数据不关注数据的流向,数据通过Channel通道进行流转。而Selector是存在与服务端的,用于Channel的注册以此实现数据I/O操作。Acceptor负责接受所以的连接通道并且注册到Channel中。原创 2022-10-01 11:01:51 · 3478 阅读 · 0 评论 -
springboot解决跨域的几种方式
方法一、SpringBoot的注解@CrossOrigin直接在Controller方法或者类上增加@CrossOrigin注解,SpringMVC使用@CrossOrigin使用场景要求 jdk1.8+ Spring4.2+@GetMapping("/hello")@CrossOriginpublic String hello() { return "hello:" + simpleDateFormat.format(new Date());}方式二:使用CorsFil原创 2022-05-12 22:01:28 · 659 阅读 · 0 评论 -
CORS和CSRF
一、CORS 和 CSRF 区别CORS(Cross Origin Resource Sharing)跨域资源分享CORS是一种机制,通过在HTTP响应头中加入特定字段限制不同域的资源请求CSRF(Cross Site Request Forgery)跨站请求伪造CSRF(Cross Site Request Forgery)跨站请求伪造CSRF 是一种web攻击手段,通过向服务器发送伪造请求,进行恶意行为的攻击手段XSS : ...原创 2022-05-12 20:45:45 · 544 阅读 · 0 评论 -
什么是跨域?跨域解决方法
一、为什么会出现跨域问题出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)二、什么是跨域当一个请求url的协议、...原创 2021-02-06 23:52:11 · 3213 阅读 · 1 评论 -
@Configuration的proxyBeanMethods属性
proxyBeanMethods默认为true,表示cglib会为@Configuration生成一个代理类,方法之间调用会从IOC容器去获取实例对象。因此而在list1中调用bashMap方法时,会通过代理方法从IOC容器中去获取,这样就是单例的。运行的时候,控制台只打印了一次“bashMap调用”就证明了这一点但是如果将proxyBeanMethods设为false,则表示不生成代理,那么list1中调用bashMap,会再生成一个对象而不是从IOC容器中获取,这样能提高性能,也造成了...原创 2022-04-17 11:21:40 · 545 阅读 · 0 评论 -
springboot注入静态变量的两种方式
1.说明@value或者@Autowired不能直接注入值给静态属性,spring 不允许/不支持把值注入到静态变量中;spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量。spring 依赖注入是依赖 set方法,set方法是普通的对象方法,static变量是类的属性。方式1:利用set方法注入在set方法上增加@value或者@Autowired就可以了@Componentpublic class MyServiceComponet { pri原创 2022-04-14 22:41:56 · 10258 阅读 · 1 评论 -
@Resource和@Autowired
1.相同点Spring都支持,都可以作用在字段和setter方法上,@Resource和@Autowired都是做bean的注入时使用2.不同点@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired @Resource是JDK提供的,而Autowired是Spring提供的,Spring属于第三方的,J2EE是Java自己的东西,可以减少代码和Spring之间的耦合。它的包是javax原创 2022-03-14 23:18:27 · 358 阅读 · 0 评论 -
SpringBoot 返回视图
SpringBoot下的Starter-web本身是没有支持模板引擎的,返回的页面也只能是静态资源,所以如果要将后台数据和页面一起返回需要增加模板引擎。SpringBoot 返回视图404SpringBoot 返回视图,静态资源报404一般是未指定资源路径。可以是使用以下两种方式解决。1.指定静态资源路径在application.yml修改spring: resources: static-locations: classpath:/2.修改pom文件修改pom编译时指原创 2022-02-23 21:56:09 · 1799 阅读 · 1 评论 -
application.yml和bootStrap.yml
bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等。bootstrap.yml 由父Spring ApplicationContext加载。(springcloud 项目用的比较多,如果springboot项目需要使用,则需要引入Spring Cloud Starter Bootstrap的依赖)application.yml(application.properties)原创 2021-09-12 13:25:47 · 617 阅读 · 0 评论 -
SpringBoot 详解一 (对象实例化的方式)
1.静态字段不支持@Autowired和@Resource实现自动装配,因为自动装配依赖于set和get方法,@Autowired和@Resource就是消除set和get方法。2.自动装配的字段可以为private,因为自动装配依赖于set和get方法。所以和字段的作用域无关。原创 2021-09-04 23:55:52 · 3671 阅读 · 2 评论 -
SpringBoot和SpringMvc的关系
之前面试工作一直有人问SpringBoot和SpringMvc有啥关系?其实我一直觉得SpringBoot就是把SprigMvc配置成了自动配置。了解过嵌入式的同学应该对bootloader这个名词原创 2021-06-06 23:25:14 · 1506 阅读 · 0 评论 -
SpringBoot详解 二 (自动配置实现原理)
SpringBoot自动配置的实现原理SpringBoot的核心就是自动配置,自动配置又是基于条件判断来配置Bean,自动配置就是将对象实例化到容器中。springboot进行实例化时SpringFactoriesLoader加载META-INF/spring.factories文件,将配置文件载入到spring容器。会过滤出key为org.springframe.boot.autoconfigure.EnableConfiguration全限定名对应的值。(最主要的注解就是@enableA原创 2021-04-12 23:14:37 · 261 阅读 · 0 评论 -
Spring Boot 启动时执行方法
这两个接口就是CommandLineRunner和ApplicationRunner,它们的执行时机是容器启动完成的时候。CommandLineRunner接口类:@Componentpublic class CommandLineRunnerTest implements CommandLineRunner{@Overridepublic void run(String[] args)throws Exception{System.out.println("CommandLineR原创 2021-04-06 23:19:49 · 1219 阅读 · 0 评论 -
Spring Boot 不同环境加载不同配置文件
加载位置与顺序SpringBoot启动会扫描以下位置的application.properties/yml文件作为spring boot的默认配置文件:file:./config/file:./classpath:/config/classpath:以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容,并形成互补配置;当然,我们也可以通过spring.config.location来改变默认配置。上面的:file: 指当前项目根目录原创 2021-03-19 00:05:09 · 6860 阅读 · 3 评论 -
Spring Boot 加载配置文件
在application.properties中增加myuser.name=testnamemyuser.age=28方式1:使用@Value注解读取方式@Componentpublic class MyUserConfig { @Value("${myuser.name}") private String name; @Value("${myuser.age}") private String age; public String getNa原创 2021-03-18 23:35:47 · 573 阅读 · 0 评论