
SpringBoot
文章平均质量分 80
长安明月
这个作者很懒,什么都没留下…
展开
-
@SpringBootApplication 包含的三个注解及其含义
Configuration 这个注解的作用就是声明当前类是一个配置类,然后 Spring 会自动扫描到添加了 @Configuration 的类,读取其中的配置信息,而 @SpringBootConfiguration 是来声明当前类是 SpringBoot 应用的配置类,项目中只能有一个。而我们的 @SpringBootApplication 注解声明的类就是 main 函数所在的启动类,因此扫描的包是该类所在包及其子包。如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包。原创 2023-12-11 11:12:02 · 1593 阅读 · 0 评论 -
SpringBoot 如何使用 @Value 给静态变量注入 application.properties 中的属性值
如果在项目中的 application.properties 配置了某个属性(假如属性名为 test.key),我们可以在 controller 层和 service 层使用 @Value 标签获取属性值,如下代码所示。但是,如果项目中需要给静态变量注入配置文件中的属性值的话(也就是,给 static 修饰的变量做 @Value 注入),发现变量值为 null。也可以在一个 Java 文件中,打上 @Component 标签,再使用上述 @Value 标签,同样可以获取到配置文件中的属性值。原创 2022-09-20 16:27:44 · 943 阅读 · 0 评论 -
SpringBoot 整合 Spring-Session 实现分布式会话(实战篇)
Spring提供了处理分布式会话的解决方案Spring-Session提供了对Redis、MongoDB、MySQL等常用存储的支持,Spring-Session提供与HttpSession的透明整合,这意味着开发人员可以使用Spring-Session支持的实现方式,切换HttpSession至Spring-Session。本文采用Redis作为第三方存储,总结下SpringBoot整合Spring-Session实现分布式会话的实战方式及测试过程。...原创 2022-07-25 10:06:12 · 4270 阅读 · 1 评论 -
SpringBoot 项目启动时设置 http 代理
SpringBoot 项目启动时设置 http 代理原创 2022-04-26 14:37:46 · 6012 阅读 · 0 评论 -
Spring Boot 整合 logback 实现不同环境配置不同的日志级别
《IDEA 创建简单的 SpringBoot 工程(含设置 HTTP Proxy 网络代理)》一文中介绍了 Idea 创建 SpringBoot 工程的步骤。SpringBoot 对各类日志组件进行了集成,使用起来非常便捷。实际在项目配置日志输出时,有些参数需要根据不同的部署环境来设置不同的取值,例如,生产环境日志输出级别为 INFO,开发环境日志输出级别为 DEBUG。本文以 logback 为例,举例说明如何配置实现不同的部署环境配置不同的参数。...原创 2020-12-08 16:38:57 · 4500 阅读 · 0 评论 -
SpringBoot 使用 spring.profiles.active 来区分不同环境配置
很多时候,我们项目在开发环境和生产环境的配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境,我们要用生产数据库,这时候,我们可以利用 profile 在不同的环境下配置用不同的配置文件或者不同的配置。 Spring Boot 允许你通过命名约定按照一定的格式 (application-{profile}.properties) 来定义多个配置文件,然后通过在 application.properties 通过 spring.profiles.active 来具体激活一原创 2020-12-01 16:52:07 · 9856 阅读 · 0 评论 -
MyBatis if test 判断字符串相等不生效
采用 MyBatis 框架操作 MySQL 数据库时,判断传入的字符串 priceFlag 值为 0 时,按照 price 属性降序排列,如下 xml 语句未生效:<if test="priceFlag != null and priceFlag == '0'"> ORDER BY price DESC</if>MyBatis 是使用 OGNL 表达式来进行解析的,在 OGNL 表达式中,‘0’ 会被解析成字符,因为 java 是强类型的,char 和 Strin原创 2020-08-28 15:39:41 · 3175 阅读 · 0 评论 -
Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(
SpringBoot 使用 jasypt 加密数据库连接用户名和密码时(具体用法详见 https://blog.youkuaiyun.com/piaoranyuji/article/details/91599116),生成加密后的用户名和密码的单元测试类如下所示。package up.sm.test;import org.jasypt.encryption.StringEncryptor;import org.junit.Test;import org.junit.runner.RunWith;impo原创 2020-08-19 14:15:35 · 1433 阅读 · 0 评论 -
MyBatis Generator 无法生成 selectByPrimaryKey、updateByPrimaryKey、deleteByPrimaryKey等主键操作方法
SpringBoot 项目采用 MyBatis Generator 插件为表 tbl_onl_test 生成 Mapper 文件时,发现生成的文件比以往少了 selectByPrimaryKey、updateByPrimaryKey、deleteByPrimaryKey 等几个方法,对应的 xml 文件中同样也少了这几个,并且 xml 文件中的 resultMap 节点里主键 id 使用的是 result 标签,而不是id标签,现象如下所示。 tbl_onl_test 表结构:CREATE TAB原创 2020-07-31 16:07:59 · 2254 阅读 · 1 评论 -
MyBatis Generator 插件遇到数据库密码含有 & 等特殊符号的解决方法
SpringBoot 项目,当使用 generator 插件生成代码时,发现报错:[ERROR] XML Parser Error on line 16: 对实体 “T” 的引用必须以 ‘;’ 分隔符结尾。 项目中的 generator.xml 数据库 jdbcConnection 配置如下所示:13 <jdbcConnection driverClass="com.mysql.jdbc.Driver"14 connectionURL="j原创 2020-07-31 10:41:15 · 1494 阅读 · 0 评论 -
理解maven命令package、install、deploy的联系与区别
我们在用 maven 构建 java 项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打 jar 包或 war包的功能,但这三个命令还是有区别的。三者的区别在于包函的 maven 生命的阶段和执行目标(goal)不同。maven 生命周期(lifecycle)由各个阶段组成,每个阶段由 maven 的插件 plugin 来执行完成。生命周期...原创 2019-06-10 18:42:48 · 327 阅读 · 0 评论 -
MyBatis 游标查询大量数据
当查询百万级或千万级大数据量的时候,MyBatis 普通查询(一次性查询出所有数据,将查询后的结果集全部塞给客户端)可能会 OOM(OutOfMemoryError)。使用游标可以节省内存消耗,不需要一次性取出所有数据,只需一次查询指定 fetchSize 的数据,直到把数据全部处理完。以下是项目中的demo。 数据库表 tbl_mgm_menu 中已构造出大量数据(如何构造大量测试数据,见上一篇博客《MySQL - 使用存储过程快速制造大量测试数据》),springboot + mybatis 项原创 2020-06-28 16:14:44 · 10188 阅读 · 6 评论 -
SpringBoot 整合 MyBatis 配置多数据源操作MySQL数据库
本文以多个 MySQL 数据库为例,采用 SpringBoot 框架,整合 MyBatis 配置多数据源进行数据库操作。在实际项目中,为了减少流量高峰期间对数据库的压力,可对一些数据库惰性数据(以查询为主,且不经常更新的数据)缓存到 JVM 内存中,可快速响应,且减少数据库压力。项目源码 git 地址:https://github.com/piaoranyuji/muldb一、MySQL 表结...原创 2020-01-21 18:54:26 · 1643 阅读 · 0 评论 -
SpringBoot 整合 swagger2 实现快速测试和快速生成 API 文档
现在很多项目都是前后端分离模式,所以在开发团队中经常需要写 API 文档,便于前后端开发对接。若手写 API 文档,则有以下几个痛点:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。文档编写需要单独占用时间,占用人力接口文档太多,不好管理不能直接在线测试接口,通常需要使用工具,比如 postmanSpringBoot 项目整合 swagger2 插件,可以快速...原创 2020-01-10 15:44:50 · 401 阅读 · 0 评论 -
Hystrix 工程实战
在博主的上一篇博客 《Spring Cloud Hystrix 服务熔断、降级原理》,简单介绍了熔断器相关的理论知识,本篇主要介绍下 Hystrix 的几种工程实战方式。原创 2019-12-26 11:54:21 · 368 阅读 · 0 评论 -
Spring Cloud Hystrix 服务熔断、降级原理
在分布式系统架构中,如果一个应用不能对来自依赖的故障进行隔离,那该应用本身就处在被拖垮的风险中。 因此,为了构建稳定、可靠的分布式系统,我们的服务应当具有自我保护能力,当依赖服务不可用时,当前服务启动自我保护功能,从而避免发生雪崩效应。在分布式微服务系统设计时,要使用一定的降级策略,来保证当服务提供方不可用时,服务调用方可以切换到降级后的策略进行处理。Hystrix 作为熔断器组件,其使用范围还是...原创 2019-12-26 11:57:05 · 1935 阅读 · 0 评论 -
IDEA 创建简单的 SpringBoot 工程(含设置 HTTP Proxy 网络代理)
用 idea 创建一个简单的SpringBoot 工程,步骤很简单,如下所示。Step 1、打开 IDEA,创建新工程,设置 SDK ,选择初始化服务地址。步骤:File > New > Project > Spring Initializr > 配置 Project SDK,选择 Initializr Service URL > Next。点击 Next 按...原创 2019-12-19 11:14:45 · 4662 阅读 · 0 评论 -
@Data标签的使用
Java 类上面添加 @Data,可以省去 setter 与 getter、toString 方法的书写,在编译时,会自动添加到class中。idea 安装 lombok 插件,步骤见 @Slf4j 标签的使用Java 类如下:package com.test.entity;import lombok.Data;/** * @description * @date 2019/12...原创 2019-12-17 18:19:35 · 1238 阅读 · 0 评论 -
@Slf4j 标签的使用
@Slf4j 是用作日志输出的,一般会在项目每个类的开头加入该注解,可以简化代码。一、使用 @Slf4j 标签,idea 首先需要安装 lombok 插件。安装完毕后需要重启 idea。二、在 pom.xml 文件加入lombok的依赖 <dependency> <groupId>org.projectlombok</groupId&...原创 2019-12-17 17:11:59 · 1357 阅读 · 0 评论 -
SpringBoot + jasypt 加密数据库连接用户名和密码
SpringBoot 整合 mybatis ,配置数据库连接信息时,一般是保存在配置文件 application.properties中,而且都是明文,因此需要进行加密处理,简单总结下 jasypt 集成 SpringBoot 加密数据库用户名和密码的配置。在 SpringBoot 项目能正常运行的前提下,分步介绍实现加密的过程。Step1:pom.xml 文件引入 jasypt 依赖。&l...原创 2019-06-12 19:22:04 · 1939 阅读 · 0 评论 -
SpringBoot 使用 @Async 实现异步任务调用
一、什么是“asynchronous call(异步调用)”?一个可以无需等待被调用函数的返回值就让操作继续进行的方法(来自百度百科)。即程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。二、Spring Boot 使用 @Async 注解实现异步化我们只需要通过使用 @Async 注解就能简单的将同步函数变为异步函数,例如新建一个 Asynctask 异步任务类,源码如下。...原创 2019-04-19 16:10:48 · 318 阅读 · 0 评论 -
SpringBoot 动态修改 cron 表达式
在实际项目开发中,定时任务是经常使用到的,例如周期性地完成某些任务。在 SpringBoot 项目中,我们通常使用的是 @Scheduled 注解来完成设置定时任务规则,但是有时候我们需要对周期性的时间设置做一些改变,那么这个时候使用此注解就不太方便了,原因在于这个注解中配置的 cron 表达式必须是常量,那么当我们修改定时参数的时候,就需要重新编译打包,重新部署。实际使用起来不是很方便。为了实...原创 2019-04-19 10:26:13 · 3235 阅读 · 0 评论 -
SpringBoot 自定义注解 + AOP 实现必填参数非空校验、接口传入参数和应答数据打印、方法耗时统计
Java Web 项目,controller 层经常需要校验传入参数必填且非空、接口传入参数打印、接口应答数据打印和方法耗时统计等功能。为了简化开发,可以通过自定义注解方式,将各个接口相通的功能点抽离到拦截器,统一实现。本文以 SpringBoot 为例,将实现方式陈述如下。一、自定义注解自定义注解 Check,注解参数为 String 型数组,数组中各元素为必填参数属性名。package ...原创 2019-04-22 11:33:21 · 11318 阅读 · 0 评论