Spring Boot
文章平均质量分 73
tomorrow.hello
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot 服务器配置
摘要:SpringBoot的默认HTTP请求头最大长度为8KB,可通过server.max-http-request-header-size配置修改。连接数配置因服务器而异:Tomcat默认最大连接数8192,工作线程200,等待队列100;Jetty线程数默认200,连接数无上限;Undertow默认I/O线程为CPU核心数×2,工作线程200。配置参数包括server.tomcat.max-threads、server.jetty.threads.max和server.undertow.threads.原创 2025-08-02 23:01:09 · 818 阅读 · 0 评论 -
SpringBoot异常处理的5种方式
【摘要】本文介绍了Spring中四种异常处理方式:1)使用@ExceptionHandler注解在Controller中处理特定异常;2)通过@RestControllerAdvice实现全局异常拦截;3)配置SimpleMappingExceptionResolver进行异常映射;4)自定义HandlerExceptionResolver实现精细化异常处理。其中全局异常处理(方式2)和自定义Resolver(方式4)更为灵活,可根据异常类型返回不同响应(ResponseEntity/ModelAndVie原创 2025-07-11 09:29:51 · 268 阅读 · 0 评论 -
SpringBoot 参数校验
定义校验注解String message() default "自定义校验信息";Class<?Class<?实现校验器@Override// 初始化代码,如果需要可以从注解中读取配置信息@Override// 这里编写具体的校验逻辑// 或者返回false,取决于你希望null值是否通过校验// 例如,检查value是否为特定的字符串在实体或DTO中使用自定义注解@MyConstraint(message = "用户名不符合预期")// 其他字段和方法。原创 2025-07-11 07:57:15 · 1058 阅读 · 0 评论 -
SpringBoot 优化启动速度
启动速度更快,提升水平扩展的启动速度。占用资源更少,打包体积更小。原创 2025-05-26 16:35:18 · 1122 阅读 · 0 评论 -
SpringBoot中@Import和@ImportResource和@PropertySource
PropertySource是引入自定义配置文件(yml或properties),用于spring boot 配置文件(yml或properties)与实体属性映射。@ImportResource是引入spring配置文件.xml,它导入的是使用xml配置文件注入的对象。原创 2024-12-04 23:33:03 · 487 阅读 · 0 评论 -
SpringBoot全局设置请求路径增加前缀
1.增加自定义注解ApiRestController2. 替换@RestController到注解@ApiRestController3. 配置WebMvcConfigurer@Component@Overrideconfigurer。原创 2024-05-17 22:56:18 · 3902 阅读 · 0 评论 -
OpenApi 接口文档
Bean.name("许可协议").description("csdn博客")@Bean.build();秒懂SpringBoot之如何集成SpringDoc(全网目前最新最系统最全面的springdoc教程) - 知乎。原创 2024-05-17 21:20:36 · 1386 阅读 · 0 评论 -
SpringBoot 的HttpServletRequest
摘要:本文介绍了HttpServletRequest的基本概念、生命周期及获取方式。HttpServletRequest接口封装了HTTP请求内容,由Servlet容器管理其生命周期(创建、处理、销毁)。获取方式包括:1)Controller方法参数;2)通过RequestContextHolder获取(线程安全);3)使用@Autowired自动注入(底层仍通过RequestContextHolder实现)。文章还详细讲解了如何通过继承HttpServletRequestWrapper来自定义Header原创 2024-03-13 23:16:33 · 3110 阅读 · 0 评论 -
SpringBoot 过滤器,Servlet,拦截器,监听器
在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在service或者一个方法前,调用一个方法,或者在方法后,调用一个方法。拦截器是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象,例如 Service对象、数据源、事务管理等,通过IoC注入到拦截器即可。在Spring构架的程序中,要优先使用拦截器。监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。原创 2024-02-29 22:51:49 · 1188 阅读 · 0 评论 -
SpringBoot 使用Mock单元测试
测试一般分为两种黑盒测试和白盒测试。黑盒测试又称为功能测试或数据驱动测试,测试过程中,程序看作成一个黑色盒子,看不到盒子内部代码结构。白盒测试又称为结构测试或逻辑驱动测试,测试过程中,程序看作一个透明盒子,能够看清盒子内部的代码和结构,这样测试人员对程序代码的逻辑有所知晓。原创 2024-02-29 20:25:06 · 2330 阅读 · 0 评论 -
Spring Boo退出时执行方法
SpringApplication会向JVM注册一个关闭钩子(hook),以确保ApplicationContext在退出时正常关闭。可以使用所有标准的Spring生命周期回调(例如DisposableBean接口或@PreDestroy注解)。原创 2023-03-31 23:15:17 · 1329 阅读 · 1 评论 -
SpringBoot读取Resources文件
SpringBoot读取文件一般分为两种,一种是获取文件对象(File/URL)另一种是获取文件的流。原创 2023-03-31 22:58:58 · 2498 阅读 · 0 评论 -
HttpClient 连接池
本文介绍了HTTP连接管理技术及常用Java HTTP客户端框架。HTTP协议从1.0的短连接(每次请求建立新连接)发展到1.1默认长连接(Keep-Alive),通过复用TCP连接提升性能。重点分析了五种Java HTTP客户端:1)Apache HttpClient提供强大连接池支持;2)OkHttp轻量高效;3)Spring WebClient支持异步非阻塞;4)Feign适合微服务间声明式调用;5)Java11原生HttpClient。详细展示了各框架连接池配置方法,包括最大连接数、超时设置等参数,原创 2023-03-31 22:37:50 · 4185 阅读 · 0 评论 -
Spring Boot 远程调用(HTTP)
本文介绍了Java中几种常用的HTTP客户端实现方式:5. RestTemplate:Spring提供的同步HTTP客户端;6. WebClient:Spring 5引入的响应式非阻塞HTTP客户端;7. OpenFeign:声明式REST客户端。重点对比了RestTemplate(同步阻塞)和WebClient(异步非阻塞)的特点、性能及适用场景,并详细介绍了WebClient的高级用法,包括连接池配置、请求方法实现和异常处理机制。文章为开发者选择适合的HTTP客户端提供了参考依据。原创 2023-03-02 22:19:14 · 1777 阅读 · 0 评论 -
Springboot 多线程安全
默认下Springboot注入的对象都是单例的,对于全局的共享变量它是线程不安全的。原创 2022-12-07 22:48:14 · 3558 阅读 · 0 评论 -
springboot 四大组件
starter包的内容就是pom文件,就是一个依赖传递包。帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况.这些Starters作为Spring相关技术的引导过程,我们 不再需要担心,它们将由Spring Boot Starters自动管理。原创 2022-11-17 23:00:59 · 5804 阅读 · 2 评论 -
SpringBoot 定时器和多线程(1) -异步实现方式
Schedule创建的定时任务默认单线程的同步执行,虽然可以通过SchedulingConfigurer指定线程的个数,但是当代码运行起来时还是同步执行,同一个调度任务还需要阻塞等待上一次任务执行完成之后才能继续执行下一次任务。不同调度任务也是同一样的,需要阻塞等待上一个调度任务完成之后,才可以继续执行下一个调度任务。所以我们需要开始定时器的多线程异步执行。原创 2022-10-02 10:24:07 · 2798 阅读 · 0 评论 -
SpringBoot 定时器和多线程(2)-定时器实现
springboot 创建定时器有两种方式一种是使用@EnableScheduling和@Scheduled注解,一种是使用SchedulingConfigurer配置,将定时任务创建出来。原创 2022-10-01 23:13:25 · 8363 阅读 · 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 · 2948 阅读 · 0 评论 -
SpringWebmvc和SpringWebflux
Spring MVC与WebFlux核心区别摘要 Spring MVC基于Servlet API同步阻塞模型(OIO),每个请求占用独立线程,适合传统Web应用。WebFlux基于Reactive Streams异步非阻塞模型(NIO),使用少量线程处理高并发,适合I/O密集型场景。主要差异: 架构:MVC依赖Servlet容器,Flux支持Netty/Undertow等服务器 线程模型:MVC线程池扩展,Flux通过事件循环提升资源利用率 编程范式:MVC采用命令式编程,Flux支持函数式响应式编程(Mo原创 2022-10-01 14:46:42 · 3092 阅读 · 0 评论 -
SpringBoot 内嵌容器
SpringBoot支持三种内嵌Servlet容器:Tomcat(默认)、Jetty和Undertow。三者均基于NIO实现高并发,其中Undertow性能最优,Jetty适合长连接场景。Tomcat配置简单但可调性差,Jetty易阻塞但吞吐量高,Undertow支持线程数调整。Netty与Tomcat核心差异在于模型(Reactor vs BIO/NIO)、协议支持和线程管理,Netty适合高并发自定义协议场景(如RPC/IM),Tomcat更适标HTTP服务开发。选择需综合考虑并发量、协议需求和开发复杂原创 2022-10-01 11:01:51 · 3900 阅读 · 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 · 955 阅读 · 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 · 687 阅读 · 0 评论 -
什么是跨域?跨域解决方法
一、为什么会出现跨域问题出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)二、什么是跨域当一个请求url的协议、...原创 2021-02-06 23:52:11 · 5720 阅读 · 1 评论 -
@Configuration的proxyBeanMethods属性
proxyBeanMethods默认为true,表示cglib会为@Configuration生成一个代理类,方法之间调用会从IOC容器去获取实例对象。因此而在list1中调用bashMap方法时,会通过代理方法从IOC容器中去获取,这样就是单例的。运行的时候,控制台只打印了一次“bashMap调用”就证明了这一点但是如果将proxyBeanMethods设为false,则表示不生成代理,那么list1中调用bashMap,会再生成一个对象而不是从IOC容器中获取,这样能提高性能,也造成了...原创 2022-04-17 11:21:40 · 620 阅读 · 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 · 11547 阅读 · 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 · 551 阅读 · 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 · 2162 阅读 · 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 · 703 阅读 · 0 评论 -
SpringBoot 详解一 (对象实例化的方式)
1.静态字段不支持@Autowired和@Resource实现自动装配,因为自动装配依赖于set和get方法,@Autowired和@Resource就是消除set和get方法。2.自动装配的字段可以为private,因为自动装配依赖于set和get方法。所以和字段的作用域无关。原创 2021-09-04 23:55:52 · 4054 阅读 · 2 评论 -
SpringBoot和SpringMvc的关系
之前面试工作一直有人问SpringBoot和SpringMvc有啥关系?其实我一直觉得SpringBoot就是把SprigMvc配置成了自动配置。了解过嵌入式的同学应该对bootloader这个名词原创 2021-06-06 23:25:14 · 1792 阅读 · 0 评论 -
SpringBoot详解 二 (自动配置实现原理)
SpringBoot自动配置通过条件注解实现外部包组件注入,主要有三种方式:1)使用@ComponentScan扫描外部包;2)通过@Import导入配置类;3)利用spring.factories或AutoConfiguration.imports文件(SpringBoot2.7/3.0+分别支持不同方式)。自动配置原理是@EnableAutoConfiguration读取这些文件,装载配置类到容器。配置类需配合@ConfigurationProperties绑定属性,实现开箱即用的starter功能。2原创 2021-04-12 23:14:37 · 491 阅读 · 0 评论 -
Spring Boot 启动时执行方法
在开发过程中会有这样的场景:需要在容器启动的时候执行一些内容,如读取配置文件信息,清除缓存信息等。在Spring框架下是通过ApplicationListener监听器来实现的。这两个接口就是CommandLineRunner和ApplicationRunner,它们的执行时机是容器启动完成的时候。ApplicationRunner接口实现方法默认先于CommandLineRunner接口实现方法执行。原创 2021-04-06 23:19:49 · 1460 阅读 · 0 评论 -
Spring Boot的Profiles(不同环境加载不同配置)
以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容,并形成互补配置;来改变默认配置的位置。原创 2021-03-19 00:05:09 · 7311 阅读 · 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 · 714 阅读 · 0 评论
分享