
SpringBoot
文章平均质量分 81
大鹏的世界
天道酬勤!分布式+大数据架构解决方案
展开
-
注解ConfigurationProperties注入yml配置文件中的数据
在使用SpringBoot开发中需要将一些配置参数放在yml文件中定义,再通过Java类来引入这些配置参数SpringBoot提供了一些注解来实现这个功能ConfigurationProperties Value EnableConfigurationProperties下面提供例子来说明如何引入常规变量,数组,List,Map,引用对象。[相关代码-GitHub]引入pom<dependency> <groupId>org.springfra原创 2021-12-17 23:32:22 · 2215 阅读 · 0 评论 -
dependencies与dependencyManagement的区别
在上一个项目中遇到一些jar包冲突的问题,之后还有很多人分不清楚dependencies与dependencyManagement的区别,本篇文章将这些区别总结下来。1、DepencyManagement应用场景当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base...原创 2021-11-22 23:33:29 · 823 阅读 · 0 评论 -
SpringBoot通过ssh通道连接mysql数据库
navicat可以通过ssh通道连接mysql数据库,那java中如何实现了,springboot又该怎样集成呢? 在开发过程中,我们经常会遇到联调、测试、找bug等问题,由于项目在不同的环境,我们找问题也非常不方便,无法通过本地代码debug调试。在公司内部的局域网内,通过浏览器中ModHeader修改请求参数,代理、重定向等方式可以方便不少,但还是无法解决跨网段的问题。1.添加包<dependency> <groupId>com.jcraft&.原创 2021-08-06 17:49:35 · 5258 阅读 · 2 评论 -
SpringBoot整合高性能微服务框架 gRPC
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏1、简介在 gRPC 里,客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得我们能够更容易地创建分布式应用和服务。gRPC 基于 HTTP/2 标准设计,带来诸如双向.原创 2021-08-04 11:07:50 · 897 阅读 · 0 评论 -
springboot+jjwt+security完美解决restful接口无状态鉴权
简介:微服务大行其道的现在,如果我们还在用wsdl之类的提供接口,给人的感觉就会很low,虽然说不能为了炫技而炫技,但是既然restful接口已经越来越流行,必然有它的道理。微服务大行其道的现在,如果我们还在用wsdl之类的提供接口,给人的感觉就会很low,虽然说不能为了炫技而炫技,但是既然restful接口已经越来越流行,必然有它的道理。本文我们不讨论restful接口的好处,旨在解决使用restful时候的权限控制问题。springboot本身已经提供了很好的spring securit.原创 2021-07-30 16:43:50 · 1035 阅读 · 0 评论 -
Profile之springboot、Maven
什么是profile 想必大家都有这种经历,我们开发项目的时候要有多个环境,如开发环境、测试环境、生产环境,他们的配置文件一般不同,如数据库地址。当我们要向各个环境发布程序时,需要人工处理这些配置文件,这显然麻烦且易错。有了profile,一切问题就简单了。简单讲profile就是一组配置,不同profile提供不同组合的配置,程序运行时可以选择使用哪些profile来适应环境。1. application-{profile}.properties文件我们先来搭建一个简单的spri...原创 2021-07-17 16:16:56 · 786 阅读 · 1 评论 -
maven内置变量
一个优秀的构建系统必须足够灵活,应该能够让项目在不同的环境下都能成功构建。maven为了支持构建的灵活性,内置了三大特性,即:属性、profile和资源过滤。maven属性maven属性分6类:1. 内置属性内置属性:如${basedir}表示项目根目录,${version}表示项目版本。2. POM属性<project> <modelVersion>4.0.0</modelVersion> <groupId>org.so转载 2021-07-17 14:50:12 · 3487 阅读 · 0 评论 -
Maven常用参数及其说明
Maven常用参数及其说明-h,--help Display help information-am,--also-make 构建指定模块,同时构建指定模块依赖的其他模块;-amd,--also-make-dependents 构建指定模块,同时构建依赖于指定模块的其他模块;-B,--batch-mode 以批处理(batch)模...原创 2021-07-13 19:03:26 · 953 阅读 · 0 评论 -
Mybatis-Plus 实践汇总
// 案例先展示需要完成的SQL语句,后展示Wrapper的写法// 1. 名字中包含佳,且年龄小于25 // SELECT * FROM user WHERE name like '%佳%' AND age < 25 QueryWrapper wrapper = new QueryWrapper<>(); wrapper.like("name", "佳").lt("age", 25); List users = userMapper.selectList(wrapper);//原创 2021-06-24 10:27:46 · 305 阅读 · 0 评论 -
mybatis中大于,小于和特殊符号的写法
使用mybatis在xml中编写sql时如果需要输入大于小于等符号时,需要写成如下形式,否则会报错,本文说明了mybatis中大于,小于和特殊符号的写法工具/原料 mybatis 方法/步骤 1 第一种写法: 原符号 替换符号 < < <= <= > > >= >= & & ' &a...原创 2021-05-13 19:10:13 · 1909 阅读 · 1 评论 -
idea + groovy + mybatis 自动生成 Dao、mappings 和 实体类
背景在 windows 系统中,idea 在C:\Users\用户名\.IntelliJIdea2018.2\config\extensions\com.intellij.database\schema目录下默认存在如下 Groovy 文件:Generate POJOs.groovy,配合 idea 的 Database 数据库管理工具,可以快速生成 POJO 类。于是我想何不基于这个类编写 groovy 代码自动生成 mappings 和 dao 呢,并按自己项目需要改造Generate P...原创 2021-05-11 16:09:34 · 906 阅读 · 1 评论 -
加速 SpringBoot 应用开发,官方热部署神器=>spring-boot-devtools
平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款SpringBoot官方的热部署工具spring-boot-devtools,修改完代码后可快速自动重启应用!spring-boot-devtools简介SpringBoot官方开发工具,如果你的应用集成了它,即可实现热部署和远程调试。实现原理使用该工具应用为什么启动更快了?主要是因为它使用了两.原创 2021-04-26 15:09:55 · 174 阅读 · 0 评论 -
SpringBoot定时任务 3 种玩法
序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。 三、基于注解设定多线程定时任务静态:基于注解基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。创建定时器使用SpringBoot基于原创 2021-04-10 16:26:19 · 165 阅读 · 0 评论 -
SpringBoot使用@Scheduled创建定时任务
定时任务一般会存在中大型企业级项目中,为了减少服务器、数据库的压力往往会采用时间段性的去完成某些业务逻辑。比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回调,这种回调一般都是定时任务来完成的。 还有就是报表的生成,我们一般会在客户访问量过小的时候来完成这个操作,那往往都是在凌晨。这时我们也可以采用定时任务来完成逻辑。SpringBoot为我们内置了定时任务,我们只需要一个注解就可以开启定时为我们所用了。本章目标基于SpringBoot架构完原创 2021-04-10 14:51:18 · 1303 阅读 · 0 评论 -
SpringBoot之HandlerInterceptor拦截器
HandlerInterceptor简介拦截器我想大家都并不陌生,最常用的登录拦截、或是权限校验、或是防重复提交、或是根据业务像12306去校验购票时间,总之可以去做很多的事情。我仔细想了想这里我分三篇博客来介绍HandlerInterceptor的使用,从基本的使用、到自定义注解、最后到读取body中的流解决无法多次读取的问题。1、定义实现类定义一个Interceptor 非常简单方式也有几种,我这里简单列举两种1、类要实现Spring 的HandlerInterceptor 接口2、类继原创 2021-03-29 23:32:50 · 515 阅读 · 0 评论 -
@JsonSerialize 与 @JsonDeserialize 使用
1、以注解方式使用: @JsonDeserialize(using = AmountDeserializer.class) @JsonSerialize(using = AmountSerializer.class) private Long amount;2、自定义实现类: 【序列化封装 和 反序列化解析】import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jacks原创 2021-03-26 20:16:26 · 652 阅读 · 0 评论 -
YML简介
在接触springboot的时候遇到了一种特殊的配置文件 .yml,本文对yml作简单介绍,快速入手yml。一、YML是什么YAML (YAML Ain't a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。原创 2021-03-15 12:21:54 · 30098 阅读 · 0 评论 -
spring-boot-starter-actuator监控接口详解
概述微服务作为一项在云中部署应用和服务的新技术是当下比较热门话题,而微服务的特点决定了功能模块的部署是分布式的,运行在不同的机器上相互通过服务调用进行交互,业务流会经过多个微服务的处理和传递,在这种框架下,微服务的监控显得尤为重要。而Actuator正是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等。如果使用不当或者一些不经意的疏忽,可能造成信息泄露等严重转载 2021-03-12 17:31:27 · 7298 阅读 · 0 评论 -
SpringBoot 之Spring Boot Starter依赖包及作用
spring-boot-starter这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。spring-boot-starter-amqp通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol. 。spring-boot-starter-aop支持面向方面的编程即AOP,包括spring-aop和AspectJ。spring-boot-starter-artemis通过Apache Artemis支持JMS原创 2021-03-12 16:44:23 · 1269 阅读 · 0 评论 -
.mvn目录&mvnw和mvnw.cmd文件说明
我们使用Maven时,基本上只会用到mvn这一个命令。有些童鞋可能听说过mvnw,这个是啥?mvnw是Maven Wrapper的缩写。因为我们安装Maven时,默认情况下,系统所有项目都会使用全局安装的这个Maven版本。但是,对于某些项目来说,它可能必须使用某个特定的Maven版本,这个时候,就可以使用Maven Wrapper,它可以负责给这个特定的项目安装指定版本的Maven,而其他项目不受影响。简单地说,Maven Wrapper就是给一个项目提供一个独立的,指定版本的Maven给它使用。转载 2021-03-12 11:45:22 · 16917 阅读 · 0 评论 -
SpringBoot构建分模块项目
开始先给大家讲一个故事:客户要做一个内部办公系统项目,项目包含了前台接待,员工管理,财务结算,库存管理 然后,我们一块做,做完上线。过了段时间,某个功能需要修改,于是你们一块改改改,上线时,所有功能都暂停使用20分钟,更新版本。再过了段时间,财务结算需要修改,于是又改改改,上线时,又暂停20分钟,更新版本。时间过去了,客户又提出,,,,,客户开始抱怨了,我只是要改某个模块,每次都要所有部门都暂停,损失太大了!于是,接待系统,员工系统,财务系统,库存系统。四个系统应运而生;叕一段.转载 2021-03-12 10:39:29 · 815 阅读 · 0 评论 -
AOP 概念图解
AOP联盟标准AOP联盟将AOP体系分为三层,从三层结构可以看出,AOP实现方式有很多种,包括反射、元数据处理、程序处理、拦截器处理等,通过本节学习,你就会看到Spring AOP的实现使用的是Java语言本身的特性,即Java Proxy代理类、拦截器技术实现。AOP简介概念切面(Aspect) :官方的抽象定义为“一个关注点的模块化,这个关注点可能会横切多个对象”。连接点(Joinpoint) :程序执行过程中的某一行为。通知(Advice) :“切面”对于某个“连接点”所产生的原创 2021-03-11 00:31:05 · 636 阅读 · 0 评论 -
Spring AOP 注解含义和切点表达式整理
切面(AOP)相关注解Spring支持AspectJ的注解式切面编程。@Aspect 声明一个切面(类上)使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。@After 在方法执行之后执行(方法上)@Before 在方法执行之前执行(方法上)@Around 在方法执行之前与之后执行(方法上)@PointCut 声明切点在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对Aspec原创 2021-03-10 23:49:18 · 3643 阅读 · 0 评论 -
玩转Jdk和Cglib动态代理
为什么需要用代理 jdk动态代理玩法详解 cglib代理常见的各种玩法详解 代理spring中用到的挺多的,比如上篇文章中的lookup-method和replaced-method,以及后面我们要学的aop、spring中的事务、spring中解析@configuration注解等等,这些都是依靠代理来实现的,所以我们先把代理拿出来讲讲,有利于我们理解其他内容。为什么要用代理我们先来看一个案例。有一个接口IService,如下:packagecom.ja...原创 2021-03-10 22:12:02 · 142 阅读 · 0 评论 -
分布式---基于Redis进行接口IP限流(可用)
场景为了防止我们的接口被人恶意访问,比如有人通过JMeter工具频繁访问我们的接口,导致接口响应变慢甚至崩溃,所以我们需要对一些特定的接口进行IP限流,即一定时间内同一IP访问的次数是有限的。实现原理用Redis作为限流组件的核心的原理,将用户的IP地址当Key,一段时间内访问次数为value,同时设置该Key过期时间。比如某接口设置相同IP10秒内请求5次,超过5次不让访问该接口。1. 第一次该IP地址存入redis的时候,key值为IP地址,value值为1,设置key值过期时间为10..转载 2021-03-10 15:38:50 · 2353 阅读 · 0 评论 -
Spring 常用注解
1.声明bean的注解@Component 组件,没有明确的角色@Service 在业务逻辑层使用(service层)@Repository 在数据访问层使用(dao层)@Controller 在展现层使用,控制器的声明(C)2.注入bean的注解@Autowired:由Spring提供@Inject:由JSR-330提供@Resource:由JSR-250提供都可以注解在set方法和属性上,推荐注解在属性上(一目了然,少写代码)。3.java配置类相关注解原创 2021-03-09 18:57:28 · 180 阅读 · 0 评论 -
Spring 注解 @Qualifier 详细解析
文章目录 1. 概述 2. 痛点 3. @Qualifier 4. @Qualifier VS @Primary 5. 通过名称来自动注入 6. 总结 1. 概述今天带你了解一下Spring框架中的@Qualifier注解,它解决了哪些问题,以及如何使用它。我们还将了解它与@Primary注解的不同之处。更多的技术解析请访问felord.cn2. 痛点使用@Autowired注解是Spring依赖注入的绝好方法。但是有些场景下仅...转载 2021-03-09 18:31:43 · 11292 阅读 · 1 评论 -
Java & Spring注解大全
1.@Configuration注解该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。@Configuration注解的类必需使用扫描.如下:@Configurationpublic class MainConfig {//在properties文件里配置 @Value("${wx_appid}")public String appid;protected...原创 2021-03-09 18:27:47 · 371 阅读 · 0 评论 -
@ConfigurationProperties 注解使用姿势
在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过@ConfigurationProperties注解,我们可以方便的获取这些参数值使用 @ConfigurationProperties 配置模块假设我们正在搭建一个发送邮件的模块。在本地测试,我们不想该模块真的发送邮件,所以我们需要一个参数来「开关」 disable 这..原创 2021-03-09 17:54:02 · 754 阅读 · 0 评论 -
@ConditionalOnBean与@ConditionalOnClass
@Conditional可以通过条件控制是否注入Bean,这篇讲下有关Bean其它几个常用的注解使用方式@ConditionalOnBean // 当给定的在bean存在时,则实例化当前Bean@ConditionalOnMissingBean // 当给定的在bean不存在时,则实例化当前Bean@ConditionalOnClass // 当给定的类名在类路径上存在,则实例化当前Bean@ConditionalOnMissingClass // 当给定的类名在原创 2021-03-09 00:29:05 · 1957 阅读 · 0 评论 -
条件注解 @ConditionalOnBean 的正确使用姿势
条件注解是Spring4提供的一种bean加载特性,主要用于控制配置类和bean初始化条件。在springBoot,springCloud一系列框架底层源码中,条件注解的使用到处可见。不少人在使用@ConditionalOnBean注解时会遇到不生效的情况,依赖的 bean 明明已经配置了,但就是不生效。是不是@ConditionalOnBean和Bean加载的顺序有没有关系呢?本篇文章就针对这个问题,跟着源码,一探究竟。问题演示: @Configuration ...原创 2021-03-09 00:27:52 · 3341 阅读 · 3 评论 -
Swagger 中 @ApiImplicitParam和@ApiImplicitParams的用途
1、@ApiImplicitParam作用在方法上,用于设置单个请求参数,用法示例:@PutMapping("/update")@ApiOperation(value = "更新用户信息", notes = "根据用户登录token更新客户端提交的用户资料")public Object update() { Map<String,Object> map = new HashMap<>(); map.put("list", null); retur...原创 2021-03-08 12:45:29 · 3963 阅读 · 0 评论 -
Mac下不能监听Docker 2375端口
参考链接:https://github.com/docker/for-mac/issues/770 使用 IDEA 配置 Docker 发现 2375 端口无法访问 修改修改 docker.service 文件,该文件在 Mac 上没有找到 换一种解决办法 执行docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:1234:1234 bobrik/socat TCP-LISTEN:1234,fork UNIX-C原创 2021-02-22 16:37:36 · 872 阅读 · 0 评论 -
史上最全的Maven Pom文件标签详解
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd...转载 2021-02-22 16:24:51 · 170 阅读 · 0 评论 -
@NotNull、@NotEmpty、@NotBlank的区别
大致区别如下:@NotEmpty用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释:1. @NotEmpty/** * Asserts that the annotated string,collection, map or array is not {**@code **null} or empty. @author Emmanuel Bernard @au原创 2021-01-21 15:21:58 · 439 阅读 · 0 评论 -
SpringBoot如何优雅的校验参数
前言做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的。如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量的IF ELSE就比如下面这样:这个例子只是校验了一下空参数。如果需要验证邮箱格式和手机号格式校验的话代码会更多,所以介绍一下validator通过注解的方式进行校验参数。什么是ValidatorBean Validation是Java定义的一套基于注解的数据校验规范,目前已经从JSR ..原创 2021-01-21 10:43:23 · 682 阅读 · 0 评论 -
spring boot常见问题
1、什么是springboot用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)创建独立的spring引用程序 main方法运行嵌入的Tomcat 无需部署war文件简化maven配置自动配置spring添加对应功能starter自动化配置答:spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用2、Spring Boot有哪些优点?答:-快速...原创 2021-01-20 14:58:34 · 478 阅读 · 0 评论 -
@RequestBody和@RequestParam区别
@RequestParam注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。RequestParam可以接受简单类型的属性,也可以接受对象类型。@RequestParam有三个配置参数:required表示是否必须,默认为true,必须。 defaultValue可设置请求参数的默认值。 value为接收url的参数名(相当于key值)。@RequestParam用来处理Content-Type为application/x...原创 2021-01-20 09:52:22 · 1449 阅读 · 0 评论 -
SpringBoot中lombok使用
lombok概述lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是在运行过程中,帮你自动生成的。就是说,将极大减少你的代码总量。 lombok作用 消除模板代码 getter、setter、构造器、toString()、equals() 便捷的生成比较复杂的代码,例如一个PO..原创 2021-01-19 19:48:33 · 7026 阅读 · 0 评论