一、Sharding-jdbc简介“Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。官方文档地址:https://shardingsphere.apache.org/document/current/cn/overview/本文demo实现了分库分表功能。如有错误,欢迎各位在评论中指出。不胜感激!二、项目结构首先创建...
继续阅读 >
分类:boot
2020
10-09
10-09
Spring Boot Swagger2使用方法过程解析
1.添加Swagger2依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.2.2</version></dependency>2配置类@Configuration@EnableSwagger2publicclassSwagger2{@BeanpublicDocketcreateRestApi(){returnnewDocket(...
继续阅读 >
2020
10-09
10-09
Spring Boot自定义favicon实现方法实例解析
自定义欢迎页SpringBoot项目在启动后,首先会去静态资源路径下查找index.html作为首页文件,若查找不到,则会去查找动态的index文件作为首页文件。例如,如果想使用静态的index.html作为首页,那么只需在resources/static目录下创建index.html文件即可。若想使用动态页面作为项目首页,则需在resources/templates目录下创建index.html(使用Thymeleaf模板)或者index.ft!(使用FreeMarker模板),然后在Controller中返...
继续阅读 >
2020
10-09
10-09
详解用Spring Boot Admin来监控我们的微服务
1.概述SpringBootAdmin是一个Web应用程序,用于管理和监视SpringBoot应用程序。每个应用程序都被视为客户端,并注册到管理服务器。底层能力是由SpringBootActuator端点提供的。在本文中,我们将介绍配置SpringBootAdmin服务器的步骤以及应用程序如何集成客户端。2.管理服务器配置由于SpringBootAdminServer可以作为servlet或webflux应用程序运行,根据需要,选择一种并添加相应的SpringBootStarter。在此示例中,我们...
继续阅读 >
2020
10-09
10-09
spring boot+redis 监听过期Key的操作方法
前言:在订单业务中,有时候需要对订单设置有效期,有效期到了后如果还未支付,就需要修改订单状态。对于这种业务的实现,有多种不同的办法,比如:1、使用querytz,每次生成一个订单,就创建一个定时任务,到期后执行业务代码;2、rabbitMq中的延迟队列;3、对Redis的Key进行监控; 1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></...
继续阅读 >
2020
10-09
10-09
Spring Boot Async异步执行任务过程详解
异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下:ExecutorServiceexecutorService=Executors.newFixedThreadPool(10);executorService.execute(()->{try{//业务逻辑}catch(Exceptione){e.printStackTrace();}finally{}});这样的方式看起来没那么优雅...
继续阅读 >
2020
10-09
10-09
Spring Boot配置读取实现方法解析
SpringBoot里面所有的配置信息都放在application.properties中,如果我们想读取配置中的值要怎么做呢?还需要自己写个读取属性文件的工具类吗?完全不要,我们可以通过各种方式来读取里面的值。当然写工具类也是一种方式,只是太麻烦了,既然SpringBoot中有封装好的实现,为什么不用。Environment方式读取框架中有一个org.springframework.core.env.Environment类,可以读取application.properties中配置的值。用法如下,我们可...
继续阅读 >
2020
10-09
10-09
Spring boot GC实现过程原理解析
内存中不可达对象(没有引用指向此对象)会被标记为垃圾对象手动将对象变为垃圾对象:将指向对象的变量置为null如何GC:查找,标记,清除,整理控制台查看是否启动GC:-XX:+PrintGC-XX:+PrintGCDetils执行时添加参数:手动启动GCSystem.gc()自动启动GC(系统底层会随着创建对象的增加,然后基于内存情况,启动GC)重复创建大量对象,内存不足时自动启动GC查看对象是否被GC重写Object的finalize方法(此方法在垃圾回收之前执行)s...
继续阅读 >
2020
10-09
10-09
Spring boot整合mybatis实现过程图解
导入mybatisjar包右键pom.xml模拟springboot底层实现类1.定义接口@MapperpublicinterfaceGoodsDao{/***基于商品id删除商品*@paramid商品id*@return删除行数*数据层方法对象的sql映射*/@Delete("deletefromtb_goodswhereid=#{id}")//当传入的参数只有一个且不是数组时//#{id}这个地方的变量可以不是传入的参数名(自己随意)intdeleteById(Integerid);}测试@SpringBootTestpubli...
继续阅读 >
2020
10-09
10-09
springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)
一、前言跟很多小伙伴聊天,发现一个严重的问题,很多小伙伴横向发展的貌似很不错,很多技术都能说出一二,但是如果在某个技术上深挖一下就不行了,问啥啥不会。就拿springboot来说,很多同学止步于springboot的应用,再往深处就一问三不知了,那么如何破局呢?smart哥认为最好的办法就是直捣黄龙,要把一个技术理解透了,听别人讲一万遍原理,不如自己撕一遍源码。要阅读源码那就首先得先搭建源码阅读环境,那么本篇文章就来介绍...
继续阅读 >
2020
10-09
10-09
Spring boot整合连接池实现过程图解
整合连接池HiKariCPHiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号,目前在springboot工程默认推荐使用HiKariCP连接池,现在我们创建一个新的项目,项目名为CGB-SBOOT-02,在此工程中整合HiKariCP,其步骤如下:第一步:添加依赖。1>创建项目时添加2>编辑项目中pom.xml,右键项目的pom.xml文件,选择spring查找mysql驱动依赖,JDBCAPI依赖依赖添加以后,在pom.xml文件中会自动添加如下两个依赖配置:mysql数据库驱动依赖。...
继续阅读 >
2020
10-09
10-09
Spring Boot设置支持跨域请求过程详解
现代浏览器出于安全的考虑,HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的,IP(域名)不同、或者端口不同、协议不同(比如HTTP、HTTPS)都会造成跨域问题。一般前端的解决方案有:①使用JSONP来支持跨域的请求,JSONP实现跨域请求的原理简单的说,就是动态创建<script>标签,然后利用<script>的SRC不受同源策略约束来跨域获取数据。缺点是需要后端配合输出特定的返回信息。②利用反...
继续阅读 >
2020
10-09
10-09
Spring Boot定时任务单线程多线程实现代码解析
1、创建定时任务:@ComponentpublicclassAutoNotifyController{/***获取RedisUtils注入的bean**@return*/privateThreadUtilgetThreadUtil(){ThreadUtilthreadUtil=SpringContextUtil.getBean("threadUtil");returnthreadUtil;}/***@描述:推送启动充电结果的自动获取和处理分发方法*@输入值:void*@返回值:void*/@Scheduled(cron="*/5****?")publicvoid...
继续阅读 >
java代码packagecom.oauth.util;importorg.springframework.boot.autoconfigure.condition.ConditionalOnProperty;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importspringfox.documentation.builders.ApiInfoBuilder;importspringfox.documentation.builders.PathSelectors;importspringfox.documentation.builders.RequestHandlerSelectors;import...
继续阅读 >
2020
10-09
10-09
spring boot空属性赋值问题与aspect日志实现方法
空属性赋值问题MyBeanUtils类publicclassMyBeanUtils{publicstaticString[]getNullPropertyNames(Objectsource){BeanWrapperbeanWrapper=newBeanWrapperImpl(source);PropertyDescriptor[]pds=beanWrapper.getPropertyDescriptors();List<String>nullPropertyNames=newArrayList<>();for(PropertyDescriptorpd:pds){StringpropertyName=pd.getName();if(beanWrapper.getPropertyValue(propertyName...
继续阅读 >
2020
10-08
10-08
Spring boot使用多线程过程步骤解析
Spring中实现多线程,其实非常简单,只需要在配置类中添加@EnableAsync就可以使用多线程。在希望执行的并发方法中使用@Async就可以定义一个线程任务。通过spring给我们提供的ThreadPoolTaskExecutor就可以使用线程池。第一步,先在SpringBoot主类中定义一个线程池,比如:packagecom.jmxf.core.config;importjava.util.concurrent.Executor;importorg.springframework.context.annotation.Bean;importorg.springframework.con...
继续阅读 >