springboot
文章平均质量分 60
笑不语
亲爱的自己,请逼自己变得优秀,然后骄傲地生活
展开
-
springboot源码学习(二)- getSpringFactoriesInstances源码解析
一、概述及流程图在springboot启动过程中,getSpringFactoriesInstances这个方法很重要,启动的时候使用该方法从classpath上所有jar包中找出对应的META-INF/spring.factorys属性文件,并将其中的初始化器和监听器加载并实例化,应用于更进一步的初始化工作。其工作流程图如下:二、源码解析让我们跟着流程图和时序图一步步窥视其中的奥妙:调用getSpringFactoriesInstances()方法public SpringAppli原创 2022-04-13 17:49:00 · 740 阅读 · 0 评论 -
多数据源mongodb的使用
一、 jar包引入<!--可以在编译源码的时候生成对应的方法--><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope></dependen原创 2021-08-12 22:53:31 · 515 阅读 · 0 评论 -
springboot日志详解
一. 主流日志框架市场上存在非常多的日志框架。 JUL(java.util.logging),JCL(ApacheCommons Logging),Log4j,Log4j2,Logback、 SLF4j、 jboss-logging等。Spring Boot在框架内容部使用JCL,spring-boot-starter-logging采用了slf4j+logback的形式,Spring Boot也能自动适配(jul、 log4j2、 logback) 并简化配置。在写log4j的两种配置方式(x原创 2020-09-25 21:58:10 · 5688 阅读 · 0 评论 -
springboot源码学习(一)- ConcurrentReferenceHashMap深度解读
一、前言最近一直在阅读springboot的启动源码,它通过加载jar包中的META-INF/spring.factories文件,通过反射实例化其实现类,实现自动装配。其中有一个数据结构被设计来缓存从spring.factorys中读取的接口及其实现类,即:ConcurrentReferenceHashMap,拿出来给大家分享一下。二、主要功能支持高并发,基于分段锁实现,性能优于hashTable和ConcurrentHashMap设计约束一致,但是支持key和value都为null默认引用方原创 2020-06-19 11:47:09 · 3313 阅读 · 4 评论 -
Spring中ApplicationEvent和ApplicationListener的应用
这个是spring基于Application的监听器,继承ApplicationEvent类就可以创建一个监听器监听的对象。具体代码如下:这个是spring基于Application的监听器,继承ApplicationEvent类就可以创建一个监听器监听的对象。具体代码如下:创建监听器监听的类package com.example.demo.event;import lombok.D...原创 2020-01-14 22:19:30 · 292 阅读 · 0 评论 -
Springboot2.1.9+druid+mybatits(不重启项目动态添加mysql和oracle数据源)和数据监控
一、前言最近公司来了一个项目,在理需求和编写接口文档的时候有一个比较有意思的需求:项目启动时不加载数据库,然后管理页面需要提供一个接口,用来配置数据库,配置成功后才连接数据库。于是我做了以下的尝试。二、技术预研1.我首先想到的是:不配置url2019-11-22 16:16:27.268 ERROR 90476 --- [ main] o.s.b.d.Logging...原创 2019-11-22 17:59:45 · 906 阅读 · 7 评论 -
springboot整合WebService实现跨服务访问
背景介绍近期在公司里面重构一个之前的老版本项目,这个项目里面有多处调用其它项目里面的接口。采用的技术是webservice,实现跨服务访问。由于这个技术出现时间较早,所以没有了解过,所以记录一下,目前只是简单连接功能,之后会引入json字符串、签名和数字证书。一、创建一个webService1.jar包引入<dependency> <groupId>org.a...原创 2019-11-10 20:30:41 · 1774 阅读 · 0 评论 -
springboot项目打包成jar或war包的方式(引用了本地jar包的)
前言由于公司有一些剩余的老资产,年代比较久远,然后一些新人过来的时候,他们学的技术和之前的比较有较大的的更新,想看懂很难,然后公司给了我一个月的时间用springboot重构一下之前的版本,在这个重构期间发现里面有很多公司自带的jar包,但是没有维护自己的maven服务器,所以必须在项目中引入本地jar包,在打包的时候碰到不少问题,当项目完成的时候需要打成war包,方便公司的部署,转换的时候又碰...原创 2019-11-07 17:51:16 · 1464 阅读 · 0 评论 -
Spring项目中value注解,@Value不能够读取到配置文件的值,无法成功注入值的问题解决(超简单)
前言今天在做项目的时候,我在监听器里面使用@Value注解获取配置文件中的值,然后出现了空指针错误,表示值没有获取到。然后我试了一下在controller层里面设置一个get方法,然后通过get方法获取,然后发现也是不行的。有点懵!后来我发现了一个问题,我设置的Listener类和springboot不能共享spring的上下文,因为我这个类没有通过@Component注解加入到sp...原创 2019-10-29 17:51:04 · 5627 阅读 · 0 评论 -
springboot+redis的sentinel实现哨兵模式(超详细)
一、环境centos7redis-3.0.4springboot2.xjdk1.8maven二、配置redis的环境本文是演示版本,采用一主二从一哨兵的模式master主机的配置对应redis.conf# 是否以守护线程的形式运行,默认是nodaemonize yes# 端口,默认6379port 6379# 日志输出文件logfile "6379.log"...原创 2019-10-28 23:24:30 · 4307 阅读 · 1 评论 -
Springboot中基于注解使用缓存
一、概述Spring定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术,并支持使用JCache(JSR-107)注解简化我们开发;Cache接口为缓存的组件规范了定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现;如RedisCa...原创 2019-08-26 23:12:56 · 657 阅读 · 2 评论 -
springboot中集成druid和mybatits
一、创建springboot项目使用spring Initializer生成spring boot项目引入如下的依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid 数据源druid --> &...原创 2019-08-26 23:11:16 · 253 阅读 · 4 评论 -
Spring Boot中整合Druid和Jpa实现简单的curd
简述jpa对操作数据库的一些方法进行了封装,我们创建一个表的时候不需要直接在数据库上进行操作,我们只需要定义一个entity,jpa就会帮我们在数据库创建相应的table,操作的时候只需要继承JpaRepository,里面有各种操作数据的方法,如果它给予的方法不满足我们的需求时,可以自定义接口。jpa的好处就是自适应各种数据库,切换数据库的时候不需要重新定义一套相关的接口,而且简单的sql不需...原创 2019-08-26 23:10:10 · 735 阅读 · 0 评论 -
springboot多环境(devlop、test、product)配置
springboot的多环境的配置多环境的配置实例演示通用的多环境配置方式个人总结和使用场景多环境的配置定义一个获取配置文件的方法,让环境变量决定调用哪个配置文件 :核心思想: 定义一个私有方法,读取环境变量里的一个自定义属性,让这个属性决定服务器调用哪个配置文件,从而达到无需修改代码和配置文件就可以实现调用不同配置文件的目的;基本组成:环境变量、tomcat启动入口、命令和jar包运行...原创 2019-01-30 21:20:20 · 2436 阅读 · 1 评论 -
swagger2的跨域配置
Swagger的配置手写api的痛点实例演示个人总结手写api的痛点手写Api文档的几个痛点:1.文档更新的时候,需要再次更新文档一份给前端,不能及时的和前端进行交流。2.接口返回结果不明确3.不能直接在线测试接口,需要借助第三方工具,比如:postman4.如果接口文档太多,不方便管理Swagger也就是为了解决这些问题而设计的,当然也不能说Swagger就一定是完美的,也有缺点,...原创 2019-02-11 17:21:28 · 6911 阅读 · 0 评论 -
SpringBoot通过注解的方式实现定时任务
springboot通过注解的方式实现定时任务实现步骤代码实现个人总结实现步骤1.搭建springBoot的启动类上添加注解@EnableScheduling2.在注解类中添加线程池3.在服务类中添加定时任务代码实现 //启动类 @SpringBootApplication @EnableScheduling public class Application { public...原创 2019-02-12 19:41:52 · 2000 阅读 · 0 评论 -
三个简化开发的小技巧
lombok在接触lombok之前,需要我们使用快捷键生成get/set方法,有参无参构造和toString方法,一个简单的entity类看起来代码量却很多。package com.infosec.netsafess.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstr...原创 2019-05-17 16:41:18 · 886 阅读 · 0 评论 -
HttpServletRequest重复读取
背景概述最近公司要求在之前的项目APP接口里面加入端口校验功能,实现起来很简单,就是通过添加拦截器的方式,在interceptor中读取端口参数,校验该端口在配置文件中是否有存在,存在返回已占用,请重新输入,不存在就添加该服务。接口中主要是json格式,其对应的是payload请求,不可以通过request的getParameter()方法直接获取,需要通过getRead或者getInputS...原创 2019-06-27 16:33:43 · 6066 阅读 · 6 评论 -
Springboot的两种配置文件语法详细介绍
SpringBoot使用一个全局的配置文件,配置文件名是固定的,有下面两种文件:application.propertiesapplication.ymlapplication.properties配置文件# 字面量(数字,字符串,布尔)user.user-name=张三# 对象user.user-name=45678user.pwd=123456user.mobile=1...原创 2019-07-03 17:37:53 · 2090 阅读 · 0 评论 -
SpEL(Spring表达语言)表达式详述
SpEL概述SpEL全称是Spring Expression Language是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。SpEL使用场景在注解@Value中@Datapublic cla...原创 2019-07-10 23:07:31 · 913 阅读 · 0 评论 -
Springboot配置文件值注入
配置文件1. application.yml# 字面量(数字,字符串,布尔)server: port: 8081user: user-name: 张三 age: 26 mobile: 18369615874 hobby: [吃饭,睡觉,打豆豆] map: {k1: 吃饭,k2: 睡觉} pwd: 1234562. test.propertiesuser.u...原创 2019-07-10 23:08:59 · 2293 阅读 · 2 评论 -
SpringBoot的静态资源映射规则
一、springBoot静态资源映射源码WebMvcAuotConfiguration:@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {if (!this.resourceProperties.isAddMappings()) {logger.debug("Default resour...原创 2019-07-17 00:24:50 · 879 阅读 · 0 评论 -
SpringBoot中servlet三大组件的注册[Servlet,Filter,Listener]
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。所以三大组件的注册也有相应的改变,接下来看一下,springboot中是如何注册的:一、Servlet的注册Servlet是一种独立于平台和协议的处于服务器端的Java应用程序,利用他可以实现业务层和表现层的分离,同时又可以生成动态页面1. 创建一个S...原创 2019-07-25 00:10:09 · 829 阅读 · 0 评论 -
自定义starter(实现HttpServletRequest重复读取)
一、概述公司里面的祖传代码很多,然后对拦截器进行修改,在拦截器中添加一些参数校验,然而对于payload请求,不可以通过getParameter()方法直接获取body里面的参数,需要读取流,然后转换成json对象,然而,抽取出来了就不能自动装配了,这个之前有写过一篇文章描述如何解决该问题的。目前又遇到了一个问题,这种参数校验的项目较多,每个项目添加几个类很麻烦,然后想着用spring-boo...原创 2019-08-05 01:31:57 · 441 阅读 · 0 评论 -
SpringBoot返回类型封装
SpringBoot返回类型封装返回类型封装的工具类工具类的调用总结返回类型封装的工具类//把返回值封装成工具类,方便调用public class ResultMapUtils { //常量,代表后台调用的结果:成功、失败和异常 public static final String SUCCESS = "success"; public static final String FAIL...原创 2019-02-01 21:50:12 · 4430 阅读 · 1 评论