Spring/SpringBoot/SpringCloud
文章平均质量分 76
Spring
SpringBoot
SpringCloud
技术的深度分享
FeelTouch Labs
这个作者很懒,什么都没留下…
展开
-
Spring框架RCE 0day漏洞,官方解决方案
3月29日,Spring框架曝出RCE 0day漏洞。已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使用JDK9及以上版本皆有可能受到影响,目前官方仍未发布修复方案。漏洞描述:作为目前全球最受欢迎的Java轻量级开源框架,Spring允许开发人员专注于业务逻辑,简化Java企业级应用的开发周期。但在Spring框架的JDK9版本(及以上版本)中,远程攻击者可在满足特定条件的基础上,通过框架的参数绑.转载 2022-03-30 14:18:49 · 6878 阅读 · 1 评论 -
Springboot设置RestTemplate的超时时间
java config方式@Configurationpublic class AppConfig{ @Bean public RestTemplate customRestTemplate(){ HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); httpRequestFactory.setC原创 2021-04-13 11:35:14 · 6499 阅读 · 0 评论 -
SpringBoot读取Resource下文件的几种方式
最近在项目中涉及到Excle的导入功能,通常是我们定义完模板供用户下载,用户按照模板填写完后上传;这里待下载模板位置为resource/excelTemplate/test.xlsx,尝试了四种读取方式,并且测试了四种读取方式分别的windows开发环境下(IDE中)读取和生产环境(linux下jar包运行读取)。第一种:ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");In转载 2020-08-14 20:56:52 · 2180 阅读 · 0 评论 -
SpringBoot的自动配置原理过程解析
SpringBoot的最大好处就是实现了大部分的自动配置,使得开发者可以更多的关注于业务开发,避免繁琐的业务开发,但是SpringBoot如此好用的自动注解过程着实让人忍不住的去了解一番,因为本文的注解解析过程会持续更新本部分,所以首先从简单的自动配置原理过程进行描述,后边在学习完注解驱动开发后,进行更深入的记录;自动配置原理过程解析:万事都从SpringBoot的入口出发,...转载 2019-06-16 22:25:04 · 519 阅读 · 0 评论 -
AOP 实现方式有三种
cglib库实现,对 Java字节码进行重新编译,将切面插入宇节码的某些点和面上 。 ·定制类加载器,在类加载时对字节码进行补充,在字节码中插入切面,增加了除业务逻 辑外的功能, JVM 自身提供的 Java Agent 机制就是在加载类的宇节码时,通过增加切 面来实现 AOP 的。JVM本身提供了动态代理组件,可以通过它实现任意对象的代理模式,在代理的过程中可 以插入切面的逻辑。可以使用...转载 2019-06-16 21:49:08 · 4542 阅读 · 0 评论 -
WebSocket系列2---SpringBoot下解决获取Httpsession及bean无法注入问题
对于现存的问题已经期望带来的Httpsession值得获取,我们的目标已经很明确了,那么直接说实现:1,在获取Httpsession教程的基础上进行修改package com.ws.chat;import javax.servlet.http.HttpSession;import javax.websocket.HandshakeResponse;import javax.we...转载 2019-11-11 01:22:17 · 1776 阅读 · 0 评论 -
WebSocket系列1---SpringBoot WebSocket 不能注入( @Autowired ) 解决问题
在WebSocket使用@service注解的service类时,启动没有问题,在发送聊天信息的时候,出现异常:java.lang.NullPointException,过程中找到很多的解决方案,但是这些方法都没有解决,会出现其他的一些错误。解决方法:将要注入的 service 改成 static,就不会为null了。代码如下:@Controller@ServerEndpoint(...转载 2019-11-11 00:54:23 · 912 阅读 · 0 评论 -
Spring Boot 2.x版本WebServerFactoryCustomizer替代pring Boot 1.xEmbeddedServletContainerCustomizer
在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,被WebServerFactoryCustomizer替代,这两个类是实现容器定制化的关键类。具体如下:springboot 1.ximport org.apache.catalina.connector.Connector;import o...原创 2019-09-26 01:05:35 · 4471 阅读 · 1 评论 -
Spring春风拂面系列---SpringBoot之@EnableAutoConfiguration注解
首先Spring Boot项目中都会如下启动类:@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }从上面代码可以看...转载 2019-09-05 00:58:56 · 255 阅读 · 0 评论 -
Spring Series--annotation-config和component-scan区别
<context:annotation-config> 和 <context:component-scan>的区别<context:annotation-config>是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上面的注解。<context:component-sca...转载 2017-12-03 15:00:38 · 407 阅读 · 0 评论 -
Spring Series---Spring AOP实战讲解
Spring是什么,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是从功能的角度来定义的,从本质意义上来讲,Spring是一个库,一个Java库,所以我个人觉得应该这样回答Spring是什么:Spring是一个库,它的功能是提供了一个软件框架,这个框架目的是使软件之间的逻辑更加清晰,配置更灵活,实现这个目的的手段使用AOP和IoC,而AOP和IoC...原创 2017-10-23 23:04:54 · 506 阅读 · 0 评论 -
Spring Series---java的动态代理机制详解
在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾。在java的动态代理机制中,有两个重要的类或接口...转载 2017-02-26 22:18:27 · 947 阅读 · 0 评论 -
Spring春风拂面系列---SpringBoot 设置response header的方法总结
主要分为两类,一是单个响应增加响应头,而是对所有响应增加响应头单个响应如果我们要在单个请求响应response增加header,可以使用httpServletResponse或者ResponseEntityobjects.UsingHttpServletResponseWe simply have to add theHttpServletResponseobject to our REST endpoint as an argument, then use theaddHead......原创 2020-05-16 14:34:23 · 16199 阅读 · 1 评论 -
解决多次读取request输入流 : getInputStream/getReader() has already been called for this request
需求实际开发中可能需要多次读取request中的输入流进行参数校验和修改,但HttpServletRequest是只能被读取一次问题public java.io.BufferedReader getReader() Throws: java.lang.IllegalStateException - if getInputStream() method has been...原创 2019-11-27 14:57:59 · 8749 阅读 · 6 评论 -
Spring Cloud Gateway 核心组件构建原理
Reference:https://mp.weixin.qq.com/s/jCQR1WkOsiOzozMAeIPk3g引言在当下学习和使用 spring cloud 技术栈的热潮中,网关已经成了不可或缺的内容。开发者在选择用来解决特定领域内问题的框架时,多了解几款相关同类产品可加大选择余地。除了 Netflix 的 zuul 之外,spring cloud gateway 可作为开发...转载 2019-10-21 19:28:03 · 3578 阅读 · 0 评论 -
Spring Series---@Scheduled使用深度理解
功能定位一种实现进程内定时任务的方法。几种实现方式类比如下:1) Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。 最早的时候就是这样写定时任务的。 2)用java.util.concurrent.ScheduledExecutorService 来实现定时任务,精确的并发语义控制,推荐3) 开源的第三方框架: Quartz 或者 e...原创 2018-05-14 00:16:42 · 1543 阅读 · 0 评论 -
Spring Series---事务中JDBC是否自动提交解析
自动提交默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果执行失败则隐式的回滚事务。对于正常的事务管理,是一组相关的操作处于一个事务之中,因此必须关闭数据库的自动提交模式。不过,这个我们不用担心,spring会将底层连接的自动提交特性设置为false。org/springframework/jdbc/dataso...转载 2019-03-25 01:00:09 · 1357 阅读 · 0 评论 -
如何实现自己的Spring Boot Starter
Spring Boot Starter是在SpringBoot组件中被提出来的一种概念,stackoverflow上面已经有人概括了这个starter是什么东西,想看完整的回答戳这里Starter POMs are a set of convenient dependency descriptors that you can include in your application. You ...转载 2019-04-22 01:36:39 · 4091 阅读 · 0 评论 -
史上最全面的Spring Boot Cache使用与整合
转自:https://www.cnblogs.com/yueshutong/p/9381540.html一:Spring缓存抽象Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;...转载 2019-05-06 22:24:20 · 411 阅读 · 0 评论 -
Springboot实现基于前缀的自定义配置和自动提示功能
一、实现基于前缀的自定义配置1. 引入maven依赖<!-- @ConfigurationProperties annotation processing (metadata for IDEs) --> <dependency> <groupId>org.springframework.boot</grou...原创 2019-05-11 14:34:29 · 8113 阅读 · 2 评论 -
从nacos-spring-boot-project角度全面看Springboot Starter
一、作用与原理首先说说原理,我们知道使用一个公用的starter的时候,只需要将相应的依赖添加的Maven的配置文件当中即可,免去了自己需要引用很多依赖类,并且SpringBoot会自动进行类的自动配置。那么 SpringBoot 是如何知道要实例化哪些类,并进行自动配置的呢? 下面简单说一下。首先,SpringBoot 在启动时会去依赖的starter包中寻找resources/MET...原创 2019-05-11 17:02:49 · 1684 阅读 · 0 评论 -
Springboot Starter的核心实现原理
spring.factories在从nacos-spring-boot-project角度全面看Springboot Starter中,我们提到过从spring.factories中找出key为XXX的类。比如org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的NacosConfigAutoConfiguration...原创 2019-05-11 17:18:11 · 3823 阅读 · 0 评论 -
Spring系列---RestTemplate深入理解
一、前言RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等RestTemplate是Springhttpclient端的核心类,简化了与http服务的通信...原创 2019-05-29 00:06:24 · 790 阅读 · 0 评论 -
RestTemplate方式发送HTTP请求详解
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,稍微截个图,这是我封装好的一个post请求工具:本教程将带领大家实现Spring生态内RestTem...转载 2019-07-28 23:27:55 · 1723 阅读 · 0 评论 -
Springboot启动报错Application.ic java.io.EOFException的原因和解决方案
原因出现该错误的原因,主要是springboot启动读取配置文件出错导致无法成功加载配置时报出的错误,最终导致启动失败现象1,报出异常,异常信息如下[2019.07.29 13:06:04] (Coverage): Failed to load coverage data from file: C:\Users\**\.IntelliJIdea2018.1\system\cove...原创 2019-08-04 12:22:48 · 8623 阅读 · 0 评论 -
也许是最全面的Spring Boot 注解讲解
链接 |http://suo.im/4ZzmWX1、Spring Web MVC 与Spring Bean 注解1-1、Spring Web MVC 注解1-1-1、@RequestMapping@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerM...转载 2019-07-27 11:20:58 · 500 阅读 · 0 评论 -
微服务访问安全设计方案全探索
我们首先从传统单体应用架构下的访问安全设计说起,然后分析现代微服务架构下,访问安全涉及的原则,接着讨论目前常用的几种微服务架构下的访问安全设计方案。最后,详析Spring Cloud微服务架构下如何解决访问安全的问题。一、传统单体应用的访问安全设计上面的示意图展示了单体应用的访问逻辑。用户通过客户端发出http或者https请求,经过负载均衡后,单体应用收到请求。接着经过auth层,进行...转载 2019-08-06 00:08:21 · 988 阅读 · 0 评论 -
Spring IOC DI MVC原理图
1.原创 2019-08-31 00:01:06 · 488 阅读 · 0 评论 -
Spring 和 JDK 扩展解耦机制的原理分析
Spring Boot的扩展机制之Spring FactoriesSpring Boot中有一种非常解耦的扩展机制:Spring Factories。这种扩展机制实际上是仿照Java中的SPI扩展机制来实现的。什么是 SPI机制SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.Servic...转载 2019-09-10 00:39:57 · 254 阅读 · 0 评论 -
Spring Series---Springboot指定不同的启动环境方法总结
概要Springboot启动指定不同的环境也主要是通过spring.profiles.active来做的,简单且容易理解。配置方式配置方式主要分为2类:1,各环境配置写在不同的文件或文件夹当中,这个在通过docker容器部署的标准配置了2,更简单、普通和常用的方式是通过把各环境的配置写在一个文件当中,尤其适于配置项少的情况,各环境通过“---”来隔开启动方式可分为2种,...原创 2018-05-12 21:38:26 · 9989 阅读 · 0 评论