![](https://img-blog.csdnimg.cn/254fe0bddb2c49079a4319304668970d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
SpringBoot
文章平均质量分 88
SpringBoot基本使用和原理解析
Bulut0907
大数据、机器学习、编程语言、IT相关技术分享, 喜欢请关注、点赞、收藏哦!
展开
-
SpringBoot使用Swagger接口文档(含分组配置)、Knife4j增强
Swagger可以快速生成实时接口文档,方便前后开发人员进行协调沟通。遵循OpenAPI规范。原创 2024-01-29 09:24:56 · 811 阅读 · 0 评论 -
SpringBoot远程过程调用RPC(WebClient、HTTP Interface客户端)
以前有sdk(Software Development Kit)工具包,导入jar包,直接调用功能即可。而远程过程调用由服务提供者提供API(接口: Application Programming Interface)服务,服务消费者通过连接对方服务器进行请求\响应交互,来实现调用效果如果是内部微服务,可以通过依赖springcloud、注册中心、openfeign等进行调用。或使用第三方框架Dubbo、gRPC如果是外部暴露的,可以发送http请求、或遵循外部协议进行调用。原创 2024-01-22 10:12:13 · 1855 阅读 · 0 评论 -
SpringBoot自定义Starter(@EnableXXX和META-INF的SPI自动添加)
-- 这样没有main主程序类也可以打包 -->原创 2024-01-15 09:25:58 · 995 阅读 · 0 评论 -
SpringBoot单元测试-JUnit5(嵌套测试、参数测试)
spring-boot-test-autoconfigure提供测试的一些自动配置,spring-boot-test提供核心测试能力,只需要导入spring-boot-starter-test即可整合测试。利用@ValueSource等注解,指定入参,我们将可以使用不同的参数进行多次单元测试,而不需要每新增一个参数就新增一个单元测试,省去了很多冗余代码。参数化测试是JUnit5很重要的一个新特性,它使得用不同的参数多次运行测试成为了可能,也为我们的单元测试带来许多便利。原创 2024-01-08 09:37:45 · 1332 阅读 · 0 评论 -
SpringBoot核心原理之事件和监听器(生命周期监听、事件触发、监听器、自定义事件发布和订阅)和配置类和Bean加载的时机
场景:监听应用从创建到销毁的整个生命周期。这样可以在应用启动之前,或启动之后做一些操作用于事件发布。在生命周期的各个重要环节,都会将事件进行广播,如果我们对那个事件比较关系,可以继续监听自定义示例如下:MyAppListener.javasrc\main\resources\META-INF\spring.factories启动springBoot应用,打印如下:1.2 生命周期全流程源码分析如下:2. 事件触发时机2.1 各种回调监听器BootstrapRegistryInitiali原创 2024-01-02 09:39:59 · 2078 阅读 · 0 评论 -
SpringBoot Profiles(Profile分组、Profile配置文件)、外部化配置
只在application.properties生效,在application-dev.properties等profile配置文件无效。以下是SpringBoot属性源加载顺序。配置不同就都生效(互补)。相同配置优先级由低到高,高优先级配置覆盖低优先级。指定一个环境,不管是否激活该环境,该环境都被激活。创建group1组,指定包含dev和test环境。快速切换开发、测试、生产环境。线上应用如何快速修改配置,并应用最新配置?,就会激活dev和test环境。如下:(后面覆盖前面)原创 2023-12-25 09:20:44 · 1678 阅读 · 0 评论 -
SpringBoot3 Web开发新特性(Problemdetails、函数式Web)
其中headers的Content-Type是application/problem+json。其中problem可以通过额外的拓展返回一些业务数据。使用函数式的方式,定义Web的请求处理流程。使用的java8函数式接口。以Restful方式,对User进行CRUD。原创 2023-12-18 09:12:45 · 184 阅读 · 0 评论 -
SpringBoot全面接管SpringMVC(WebMvcAutoConfiguration自动配置的规则、@EnableWebMvc禁用默认行为)
SpringBoot默认配置好了SpringMVC的所有常用特性。如果我们需要全面接管SpringMVC的所有配置并禁用默认配置,仅需要编写一个WebMvcConfigurer配置类定义MVC的底层行为,并标注@EnableWebMvc禁用默认配置即可。SpringMVC内部场景异常被它捕获。3.5. 请求上下文过滤器:RequestContextFilter: 任意位置直接获取当前请求。4.9. Validator: 数据校验JSR303提供的数据校验功能。3.6. 静态资源链规则。原创 2023-12-11 09:23:41 · 421 阅读 · 0 评论 -
SpringBoot嵌入式容器(自动配置原理、自定义嵌入式容器)
切换嵌入式服务器。-- springboot3使用jakarta-servlet 6,但是jetty使用jakarta-servlet 5- -->原创 2023-12-04 09:17:25 · 166 阅读 · 0 评论 -
SpringBoot错误处理机制(ControllerAdvice+ExceptionHandler自定义错误处理、默认机制源码分析、错误处理实战)
和内容协商一样,header头的accept参数设置application/xml,则以XML格式返回数据。参数配置的路径,如果没有配置参数,则默认是/error。由ErrorMvcAutoConfiguration添加的BasicErrorController组件进行处理。如果我们没有进行自定义的错误处理,springBoot提供默认的错误处理机制。我们先说HTML的错误处理。SpringBoot的DefaultErrorViewResolver,提供了解析自定义错误页的默认规则。再说移动端的错误处理。原创 2023-11-28 09:15:34 · 377 阅读 · 0 评论 -
SpringBoot的@GetMapping路径匹配规则、国际化
例如:/{type}/{id}.html匹配任意文件名为{id}.html,在任意命名的{type}目录下的文件。访问http://localhost:8080/abc/bd/abcdef/1/2。国际化的自动配置参照MessageSourceAutoConfiguration类。messages_zh_CN.properties:中文环境。messages_en_US.properties:英语环境。messages.properties:默认。原创 2023-11-20 09:11:28 · 939 阅读 · 0 评论 -
SpringBoot整合Thymeleaf、Thymeleaf语法、优先级、模板布局
如果需要服务端页面渲染,优先考虑使用模板引擎SpringBoot 包含以下模板引擎的自动配置FreeMarkerGroovyThymeleafMustache。原创 2023-11-13 09:18:31 · 564 阅读 · 0 评论 -
SpringBoot内容协商(简单使用、源码解读、默认Converters、自定义Converters)
添加依赖,用于对Object进行转换编写一个YamlHttpMessageConverter//把对象转成yaml// 告诉SpringBoot这个MessageConverter支持哪种媒体类型@Override> clazz) {// 只要是对象类型,不是基本类型,则都支持对接收的yaml格式参数进行解析,这里不处理@Override把对象以yaml格式传输出去@Override// try-with写法,自动关流。原创 2023-11-06 08:35:54 · 460 阅读 · 0 评论 -
SpringBoot的Web自动配置和默认功能、WebMvcAutoConfiguration原理
SpringBoot的Web开发能力,由SpringMVC提供。原创 2023-10-30 09:10:56 · 345 阅读 · 0 评论 -
SpringBoot的日志系统(日志分组、文件输出、滚动归档)
Spring5及以后Spring自己实现了commons-logging,来作为内部的日志。日志的jar包是org.springframework:spring-jcl:6.0.10。查看org.apache.commons.logging.LogAdapter......省略部分............省略部分......只要导入了哪些日志包,就会使用哪些日志实现框架。所以底层的日志是开放的,可对接其他日志框架支持 jul、log4j2、logback(默认)日志实现。原创 2023-10-23 09:23:04 · 553 阅读 · 0 评论 -
SpringBoot的日志系统(日志分组、文件输出、滚动归档)
web: 包含org.springframework.core.codec、org.springframework.http、org.springframework.web、org.springframework.boot.actuate.endpoint.web、org.springframework.boot.web.servlet.ServletContextInitializerBeans。查看org.apache.commons.logging.LogAdapter。需要开启日志文件输出。原创 2023-10-23 09:17:55 · 860 阅读 · 0 评论 -
SpringBoot采用集成多个Mybatis框架实现多JDBC数据源 + 多数据源本地事务
这里只做了一部分的记录,并未运行进行测试自定注解,然后通过多线程的方式执行多个事务方法@Component@Aspect// ComboTransaction类需要自己定义,还未定义@Autowiredtry {// 执行目标方法。原创 2023-10-16 09:20:24 · 276 阅读 · 0 评论 -
SpringBoot采用Dynamic-Datasource方式实现多JDBC数据源
DSTransactional能和@DS多数据源切换配合使用,@DSTransactional注解最好使用在方法上(类似好像不生效),@DSTransactional注解不能对异常进行捕获手动回滚,只能自动回滚然后抛出异常。可以在Service的类或方法上(优先级更高)使用@Transactional实现事务。分别创建read_db.user和write_db.user,并向read_db.user写入数据。可以在Service的类或方法上(优先级更高)使用@DS注解选择DataSource。原创 2023-10-09 09:16:04 · 2038 阅读 · 0 评论 -
SpringBoot采用AOP基于注解的方式实现多JDBC数据源
我们可以通过来帮我们实现动态数据源的切换,而且AbstractRoutingDataSource实现了很多DataSource的方法,稳定性更好targetDataSources:需要动态切换的所有DataSourcedefaultTargetDataSource:默认DataSourceresolvedDataSources:内部在afterPropertiesSet方法中自动从targetDataSources传递根据key从resolvedDataSources获取DataSource。原创 2023-10-03 10:34:36 · 267 阅读 · 0 评论 -
SpringBoot整合Kafka(自动配置分析、同步异步producer、comsumer、自定义KafkaAdmin和KafkaTemplate)
启动SpringBoot应用,就会在kafka中创建topic// 将NewTopic添加到IOC容器时,会自动创建kafka的topic@Bean// 创建一个name为springboot-create-topic1, 1个partition, replication为1@Bean// 创建一个name为springboot-create-topic2, 1个partition, replication为1// 实现自定义的KafkaAdmin,不建议这样做。原创 2023-09-25 09:07:11 · 824 阅读 · 0 评论 -
SpringBoot整合Redis(自动配置分析、切换Jedis、自定义序列化器)
Redis是一个开源(BSD许可)的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询、bitmaps、hyperloglogs和地理空间(geospatial)索引半径查询。原创 2023-09-18 09:04:49 · 2159 阅读 · 0 评论 -
SpringBoot整合Mybatis-Plus(含自动配置分析)
Mybatis-Plus是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,能提高开发效率。原创 2023-09-11 09:02:42 · 1197 阅读 · 0 评论 -
SpringBoot整合Mybatis(配置版 + 注解版 + 混合版)
查看mybatis-spring-boot-autoconfigure-2.2.2.jar的META-INF\spring.factories,可以看到给我们自动配置了MybatisLanguageDriverAutoConfiguration和MybatisAutoConfiguration。可以看到mybatis-spring-boot-starter的依赖了spring-boot-starter-jdbc、mybatis、mybatis-spring。添加Mybatis提供的starter。原创 2023-09-04 09:02:46 · 601 阅读 · 0 评论 -
SpringBoot使用Druid连接池 + 配置监控页面(自定义版 + starter版)
全方位监控、防SQL注入攻击等添加druid连接池的依赖,如下所示:2.2 MyDataSourceConfig实现说明如下:2.3 application.properties配置在代码中可以对DataSource进行各种配置参数的set,也可以在application.properties中对durid连接池进行配置,如下所示:编写Controller进行测试2.4 druid监控页面查看访问http://localhost:8080/druid/index.html,页面效果如下:其中原创 2023-08-28 09:14:57 · 11227 阅读 · 2 评论 -
使用SpringBoot对JDBC连接类型的数据库进行操作
SpringBoot帮我们简化了对JDBC连接类型的数据库的操作,只需要配置这个starter,然后在application.properties配置jdbc的相关配置和连接池的相关配置等,就可以对数据库进行操作了。原创 2023-08-21 09:28:08 · 991 阅读 · 0 评论 -
SpringBoot对一个URL通过method(GET、POST、PUT、DELETE)实现增删改查操作
虽然Postman这些工具可以直接发送GET、POST、PUT、DELETE请求。但是@RequestMapping并不支持PUT和DELETE请求操作。其中GetMapping、PostMapping、PutMapping、DeleteMapping等同于@RequestMapping对应的method。PUT和DELETE还是通过method=POST进行请求,但是需要添加对应的隐藏域_method=PUT/DELETE。我们都知道GET、POST、PUT、DELETE分别对应查、增、改、删除。原创 2023-08-14 09:10:56 · 452 阅读 · 0 评论 -
SpringBoot的index首页的访问、自定义Favicon图标
将favicon.ico文件放到静态资源目录下,然后访问任意一个URL,就会显示小图标。如果没显示小图标,注意清一下浏览器缓存注意:配置文件不要配置spring.mvc.static-path-pattern参数,否则不能看到Favicon图标。原创 2023-08-07 09:03:41 · 447 阅读 · 0 评论 -
SpringBoot的static静态资源访问、参数配置、代码自定义访问规则
如下。添加一个静态资源访问URL,并指定其访问资源路径和缓存时间。其原理是给容器中添加一个WebMvcConfigurer组件,让配置的底层行为都生效// @EnableWebMvc // 禁用springBoot的默认配置// 这是一个配置类。给容器中放一个WebMvcConfigurer组件,就能自定义底层。有以下两种方式// 1. 可以让配置类实现WebMvcConfigurer接口// 2. 可以在配置类中,将@Bean注解标注在方法上,然后方法返回WebMvcConfigurer。原创 2023-07-31 09:16:06 · 1091 阅读 · 0 评论 -
SpringBoot开发小技巧使用(DEBUG、启动图标修改、Lombok、devtools、Spring Initializr)
然后启动springboot应用,就可以看到DEBUG的日志。然后修改代码,再在IDEA按CTRL + F9,进行项目的重新编译。创建完项目,resources目录下的static是放CSS、JS静态资源的,templates是放html页面的。Lombok是一个简化Java Bean开发的小工具。打印的日志如下,小图标已经改成百度了。如果构造参数即不是无参构造,也不是全参构造,可以按常规方法定义构造器。不需要按CTRL + F9的,有付费的Jrebel插件。同时也会打印如下的日志。原创 2023-07-24 09:06:41 · 2194 阅读 · 0 评论 -
通过SpringBoot源码学习自动配置原理基础、IOC容器配置修改
因为@ConfigurationProperties + @EnableConfigurationProperties可以将application.properties中以指定前缀的配置绑定到配置类上,然后再将配置类添加到IOC容器。也就能达到修改IOC容器的行为。所以我们可以在我们自己的程序中,向IOC容器添加对应的组件,这样就不会进行springboot默认的加载了。在自动配置类上面,或自动配置类的方法上面,都有很多@Conditional注解,这个就是根据不同的条件,将需要的组件添加到IOC容器中。原创 2023-07-17 09:09:05 · 161 阅读 · 0 评论 -
SpringBoot的@ConfigurationProperties、@Autowired、@Conditional注解
<excludes><exclude></exclude>原创 2023-07-10 08:58:14 · 820 阅读 · 0 评论 -
SpringBoot的IOC容器bean查看、@SpringBootApplication、@Configuration、@Import、@ImportResource注解
SpringApplication.run会返回IOC容器ConfigurableApplicationContext然后通过ConfigurableApplicationContext.getBeanDefinitionNames返回IOC容器所有bean的name@SpringBootApplication的参数scanBasePackages会使默认的目录不被扫描,扫描新的目录@ComponentScan会使@SpringBootApplication的目录不被扫描,扫描新的目录。原创 2023-07-03 09:11:37 · 1285 阅读 · 0 评论 -
SpringBoot使用入门和案例实现
也可以定义配置文件application.yaml。会和application.properties进行配置合并,但application.properties的优先级更高。直接运行MyApplication.java程序,然后用浏览器访问http://localhost:8088/hello。该配置文件的名称是约定好的。配置文件的值会绑定对应的类上,类会在IOC容器中创建对象。命令进行打包,然后将jar包上传到服务器,用java命令。以前台运行的方式启动应用。原创 2023-06-25 09:14:40 · 986 阅读 · 0 评论 -
如何学习SpringBoot、Spring全家桶功能、Springboot相关概念
这样就可以解决配置管理(分布式的修改配置)、服务监控、链路追踪(多层数据调用形成链路)、日志管理、任务调度的问题。:会使用Spring + 了解AOP、IOC + 会简单使用Spring MVC。:当前最新的SpringBoot版本是2.7.5。原创 2023-06-19 09:19:13 · 420 阅读 · 0 评论