跟着大宇学SpringBoot
文章平均质量分 63
基于博主的SpringBoot实际开发的经验。纯干货,接地气,注重实战,不扯淡。
小大宇
能与优秀的人为伍自然就会变优秀
展开
-
跟着大宇学SpringBoot目录贴
与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。 纯干货,重实战,贵在积累。从头开始学SpringBoot目录 第一节 SpringBoot项目基础搭建 第二节 使用日志 ...原创 2019-11-18 17:40:00 · 1734 阅读 · 0 评论 -
SpringBoot集成nacos实现统一配置中心
导入依赖这里导入的依赖很有讲究,你是啥springboot版本,然后下面的配置值就是啥,我也是醉啦。 <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> &原创 2022-03-12 15:25:01 · 15372 阅读 · 3 评论 -
SpringBoot配置文件产生随机值
1.1int随机数使用${random.int}方式配置,结果从int的最大值、最小值中间产生,int的最小值为-2147483648,最大值为2147483647,配置如下所示:server: port: ${random.int}1.2int范围随机数使用${random.int(10000)}方式配置,这种方式我们可以指定随机数的最大值,当然不能超过2147483647,配置如下所示:server: port: ${random.int(10000)}注意事..原创 2022-02-18 17:45:33 · 2081 阅读 · 0 评论 -
SpringBoot使用logback
<configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!-- 定义参数,后面可以通过${APP_NAME}使用 --> <property name="APP_NAME" value="sample"/> <!-- ../logs日志文件会生成在项目的外面的一个文件夹下 --> .原创 2022-02-18 15:53:40 · 909 阅读 · 0 评论 -
SpringBoot集成SpringSecurity
(1) 直接配置登录spring: security: user: name: admin password: admin(2) 内存登录import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation原创 2022-02-03 17:55:26 · 2593 阅读 · 1 评论 -
SpringBoot访问静态文件
一、集成到默认地址默认地址classpath:/META-INF/resources/","classpath:/resources/", "classpath:/static/", "classpath:/public/原创 2022-01-15 16:18:33 · 1194 阅读 · 0 评论 -
SpringBoot使用RestTemplate
初始化 使用Configuration 加入IOC容器 的配置:import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.client.SimpleClientHttpRequestFactory;import org.springframework.h...原创 2022-01-13 20:02:24 · 639 阅读 · 0 评论 -
SpringBoot配置跨域
@Configurationpublic class WebMcvConfig implements WebMvcConfigurer ... @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("POST",原创 2021-09-29 13:13:54 · 143 阅读 · 0 评论 -
SpringBoot复制Jar包中文件
背景:有一个资源文件需要复制到新的目录,但是这个资源文件已经被其它项目打包成了JAR,并且当前的SpringBoot项目引用了这个JAR包。 问题:在项目没有打包之前,该资源文件可以正常被访问到,并且可以使用IO复制。但是一旦当前项目打包,放到Linux服务器上后,就不能复制到该资源文件。后来直接在本地windows环境中启动项目,也同样出现该资源文件访问不到的情况。 简单说:在开发环境中能读取到别的JAR中的资源文件,但是打成jar...原创 2021-09-16 17:08:18 · 854 阅读 · 0 评论 -
第二十五节 SpringBoot开发自定义Starter
整体项目结构一、开发autoconfigure模块 autoconfigure用于开发在starter初始化得时候,执行一些功能。 (1)需要的autoconfigure需要三个固定的依赖 <!-- 导入SpringBoot WEB开发环境 --> <dependency> <groupId>org.springframework.boot</groupId>...原创 2020-07-03 15:52:58 · 596 阅读 · 0 评论 -
第二十七节 SpringBoot使用Maven制作项目模版
文章目录项目的整体结构/ pom.xml 生成骨架基本依赖resources / META-INF / maven / archetype-metadata.xml 生成哪些文件resources / pom.xml 生成的项目的依赖具体项目pom.xmlCustomerController骨架发布通过骨架生成项目代码最终生成得效果项目源代码地址项目的整体结构/ pom.xml 生成骨架基本依赖 pom.xml里需要引入生成骨架的基本依赖<?xml version="1.0" enco原创 2020-06-29 16:06:11 · 592 阅读 · 1 评论 -
第二十六节 SpringBoot开发自定义starter之配置自定义Starter提示信息
一、元数据格式 提示文件编写在META-INF的spring-configuration-metadata.json文件下。元数据文件的大部分是在编译时通过处理所有用@ConfigurationProperties注释的项目自动生成的。 但是,对于极端情况或更高级的用例,可以手动编写部分元数据。 配置元数据文件位于META-INF / spring-configuration-metadata.json下的jar内,它们使用简单的JSON格式,将项目归类为【groups】...原创 2020-06-11 14:11:55 · 2768 阅读 · 0 评论 -
第二十四节 SpringBoot使用spring.factories
有幸参与了公司新框架的开发,大佬们齐思广义,我很尴尬,啥都不会。老大问我有什么想法,我想最好的想法就是学习大佬们的想法吧。META-INF/spring.factories文件 在把新框架打成Jar后,其他项目导入我们的Jar,姑且叫它【消费者项目】吧。如何把我们已经配置好的@Configuration的配置类,加入到使用我们Jar包的消费者项目中呢? 在启动类中,@SpringBootApplication注解的代码里面有一句@EnableAutoC......原创 2020-06-05 17:16:30 · 13098 阅读 · 1 评论 -
第二十三节 SpringBoot使用AOP
一、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>二、编写扫描的注解@Retention(RetentionPolicy.RUNTIME)@T原创 2020-06-04 10:56:24 · 443 阅读 · 0 评论 -
第二十二节 SpringBoot启动时执行SQL脚本
启动时指定SQL脚本 之前介绍过一种方案,用flyway进行数据库的管理。 今天发现公司的大佬又用了别的方案解决数据库初始化脚本问题。 在application.yml中加入下述配置。spring.datasource.schema指定SQL语句的建表语句位置。spring.datasource.data指明SQL语句初始化数据的文件...原创 2020-02-04 16:20:10 · 1202 阅读 · 0 评论 -
第二十一节 SpringBoot多项目打包
一、使用 Intellij IDEA 工具的Maven插件打包思路 项目整体结构如下。分为authentication、core、service、web四个大模块。 core负责核心Java公用配置,例如分页拦截器、Datasource等。 service、authentication这两个模块负责业务。 web封装了启动类...原创 2020-01-17 15:36:54 · 393 阅读 · 0 评论 -
第二十节 SpringBoot项目适配MySQL与Oracle
一、面临问题 当前项目的开发全部是基于MySQL5.7。最近项目需要技术支持另外一所高校,学校使用的生产数据库是Oracle11。因此,昨天我使用Docker安装了Oracle11。项目组里的另外一位大佬引进了一项技术,并且讲述了原理。这里我也记下基本使用情况。具体原理以后再弄。 我这里的代码展示了如何同时支持Oracle与MySQL数据库。 ...原创 2020-01-17 09:17:11 · 2315 阅读 · 2 评论 -
第十九节 SpringBoot项目打包部署
一、基本步骤 现阶段,我只掌握了打成JAR包的方式。 (1)在pom.xml中增加打包方式。由packaging指明。 <artifactId>learnspringboot</artifactId> <version>0.0.1-SNAPSHOT</version> <name&...原创 2019-11-13 09:19:15 · 852 阅读 · 1 评论 -
第十八节 SpringBoot使用Redis实现分布式锁
一、共享资源问题 我们知道,在如果希望多个线程获取同一个共享资源,在Java里面一般使用Synchronized锁ReentrantLock锁来解决。对于单节点的项目,所有的线程都在同一个JVM进程里面,使用Java语言提供的锁机制可以起到对共享资源进行同步的作用。 那么,我现在遇到的问题是:SpringBoot项目通常都是分布式部署,一般会部署好几个节点。这几...原创 2019-11-20 09:12:52 · 902 阅读 · 8 评论 -
第十七节 SpringBoot通过Redis实现Session共享
一、基本原理 Cookie 保存在客户端浏览器中,而 Session 保存在服务器上。浏览器第一次访问服务器,服务器会创建一个Session,并将SessionId通过Cookie的形式传递给浏览器。下次浏览器再次向服务器请求数据的时候,会带着这个Cookie。服务器会快速识别出这个Cookie,并且通过Cookie找到刚才创建的Session。说的简单一点就是,顾客去超市,超...原创 2019-11-20 09:12:36 · 566 阅读 · 0 评论 -
第十六节 SpringBoot集成Redis
一、集成Redis Redis安装与基本操做,可以参考这篇文章:第一次使用Redis Redis是非常优秀的缓存中间件,我的Redis使用经验主要集中在 1)解决分布式系统中Session共享问题 2)利用Redis缓存制作分布式锁 3)缓解数据库压力,为某些重要的数据提供限时缓存 SpringBoot项目集成...原创 2019-10-15 20:22:14 · 460 阅读 · 0 评论 -
第十五节 SpringBoot使用本地锁
一、问题现象 前端小姐姐对我说过,需要后台限制重复表单提交。前端小姐姐把form表单数据提交到后台,但是在推送的时候,可能因为网络延迟,多点了两下提交按钮。怎么才能解决表单重复提交的问题呢? 根据以前的老经验,一般在数据库表中为某个提交字段创建唯一索引,这样就能限制相同数据入库。 上述经验已经老的掉牙,每次都在数据库中创建唯一索引。为什么非要等...原创 2019-10-11 22:10:57 · 1510 阅读 · 0 评论 -
第十三节 使用Flyway管理线上数据库
一、Flyway解决的问题 Flyway用于解决线上数据库的结构问题。一般项目都会分期,一期二期三期。 随着项目的推进,上线后的数据库结构也可能也会有所变动。因此,需要使用Flyway来解决数据库变动的问题。 修改生产上的数据库不可能像我们在开发的时候那么草率,需要明确的数据库变动SQL文件。 Flyway就用于解决上述问题。...原创 2019-10-09 19:10:42 · 595 阅读 · 0 评论 -
第二节 SpringBoot使用日志
一、使用日志 SpringBoot中默认集成了Slf4j日志。 配置非常的简单。在application.yml中添加如下配置。 常见的对于日志的配置(1)配置日志输出位置file(2)配置日志输出格式pattern(3)配置日志输出等级levellogging: #配置日志位置 file: /opt/logs/web-learn...原创 2019-09-09 15:44:57 · 684 阅读 · 0 评论 -
第三节 SpringBoot参数校验
一、参数校验 常见的用于校验的注解有@NotNull 用于校验数字类型 javax.validation.constraints.NotNull;@Max 用于校验数字最大值 javax.validation.constraints.Max;@Min 用于校验数字最小值 ja...原创 2019-09-09 16:50:38 · 946 阅读 · 1 评论 -
第四节 SpringBoot处理异常(异常设计的思考)
一、基本异常 我常常自己问自己,如果为某个系统设计一套异常体系,我应该怎么开始我的工作。 (1)首先就是基本异常响应。前端们希望得到的异常响应肯定是有 响应码code 、错误信息message。在JAVA异常体系中,错误原因message字段异常体系已经帮我们定义了,所以不用重复定义。因此,我们可以编写一个基础的基类。构造两个常见的构造函数,来自定义错误响应码...原创 2019-09-10 13:41:21 · 773 阅读 · 0 评论 -
第五节 SpringBoot统一全局响应
一、基础响应 前后端分离一定会设计到数据传输。因此,每个项目必定都有一个基础的响应类。 我就以我个人的经验编写这个类吧。定义基础:响应码code、响应信息message、传输的数据data、总记录数。 定义两个基础的构造函数,再定义两个通过枚举的构造函数。package com.zhoutianyu.learnspringboot.res...原创 2019-09-10 14:52:19 · 1250 阅读 · 0 评论 -
第六节 SpringBoot使用单元测试
一、封装单元测试 (1)SpringBoot的单元测试不依赖网络环境,可以直接在测试文件中指明当前激活的分支。 先搭建了一个基本的SpringBoot环境。可以访问到当前项目中的任意Controller层接口。 基本的GET、POST方法我已经封装,拿到后直接调用即可。 package com.zhoutianyu.l...原创 2019-09-10 16:23:39 · 413 阅读 · 0 评论 -
第七节 SpringBoot自定义参数
一、使用yml配置文件 第一种方式就是把自定义参数配置在yml配置文件中。 例如,在application.yml中加入如下配置。#自定义参数define: userinfo: username: zhoutianyu age: 24 position: java engineer department: name...原创 2019-09-11 14:21:08 · 821 阅读 · 0 评论 -
第八节 SpringBoot使用过滤器与拦截器
一、过滤器Filter 创建过滤器的方法很简单,也传统的WEB项目一样,实现 Filter接口即可package com.zhoutianyu.learnspringboot.filter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.*;import ja...原创 2019-11-20 09:10:06 · 895 阅读 · 0 评论 -
第九节 SpringBoot使用数据库连接池
一、使用Druid数据库连接池 数据库连接池只有真正的手动配置,才知道具体的过程。以前都是搭建好的项目,现在自己手动搭建一次。还遇到了不少坑。首先是,阿里巴巴的数据库连接池版本与SpringBoot版本会有一定的关系。好了,废话不多说。 (1)导入依赖。这里使用1.1.10版本的,为了兼容比较旧的SpringBoot项目, 另外一个就是旧版本的相对稳定。 ...原创 2019-09-12 10:13:33 · 775 阅读 · 0 评论 -
第十节 SpringBoot集成MyBatis与MybatisPlus
一、使用MyBatis Mybatis现在应该在当前的市场上占据了大半壁江山,至少我任职过的公司都用mybatis。 (1)首先导入MyBatis的依赖。关于数据库连接池的相关配置可以参考上一节:第九节 使用数据库连接池,这里不赘述。 <!-- mybatis依赖--> <dependency> ...原创 2019-09-12 11:14:06 · 430 阅读 · 0 评论 -
第十一节 SpringBoot使用Mybatis分页插件
前置 首先想说的是,在我上一家公司中,分页查询都是通过程序员手动编写SQL来控制,效率相对较差。Mysql数据库分页使用LIMIT关键字,Oracle的分页很难写,既复杂又难以记忆。我提出这类分页可以使用分页插件来做,当然了,还是有少部分人露出了怀疑的神色。 我请教了另外项目组的一个非常厉害的开发人员lowe。它自己封装了一套分页代码,十分的优雅。我也专门拜读了...原创 2019-09-12 18:09:23 · 776 阅读 · 0 评论 -
第十二节 SprnigBoot使用定时任务
一、使用定时任务 SpringBoot Starter包中已经内置了定时任务的方法。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter&l...原创 2019-09-26 17:48:28 · 1661 阅读 · 0 评论 -
第十四节 SpringBoot上传文件
一、使用上传技术 (1)在yml中添加上传配置。限制单个文件上传以及多个文件总大小限制。如果超出限制,页面将出现报错页面。spring: #上传文件使用 servlet: multipart: #单个文件最大上传大小 max-file-size: 10MB #每次请求上传文件大小最大值 max-request-...原创 2019-10-10 10:49:26 · 405 阅读 · 0 评论 -
第一节 SpringBoot项目基础搭建
一、配置文件格式基本选择 新建好的SpringBoot项目起初的目录如下。我个人不喜欢applicaiton.properties这种风格,所以准备切换成yml这种风格。 新建四个文件,application.yml 、application-dev.yml 、application-test.yml、application-pro.y...原创 2019-09-09 14:53:05 · 768 阅读 · 0 评论