spring boot
文章平均质量分 73
浮生夢
当有一天,有星光刺破黑洞的昏暗,那是我吞吐天地的余晖,代表着我已映照诸天。当有一天,有玄雷划过星空的浩瀚,那是我拳光的劲风,代表着我已回来。当星河列阵,宇宙星海星光齐绽,那是我在笑,我已复苏,我在归来,我已无敌!
展开
-
SpringBoot自动配置底层源码解析
SpringBoot中众多的条件注解,都是基于Spring中的@Conditional来实现的,所以我们先来用一下@Conditional注解。先来看下@Conditional注解的定义/***/Class原创 2023-05-19 10:24:54 · 919 阅读 · 0 评论 -
SpringMVC底层原理源码解析
因为这三个接收的直接就是Requeset对象,不用SpringMVC做额外的解析,所以比较简单,比较复杂的是RequestMappingHandlerAdapter,它执行的是加了@RequestMapping的方法,而这种方法的写法可以是多种多样,SpringMVC需要根据方法的定义去解析Request对象,从请求中获取出对应的数据然后传递给方法,并执行。RouterFunctionMapping的寻找流程会有些区别,但是大体是差不多的,相当于是一个path对应一个HandlerFunction。原创 2023-05-06 18:25:52 · 2164 阅读 · 0 评论 -
Spring 循环依赖处理之三级缓存设计
如上图,创建A之前需要先创建B,创建B之前需要先创建A,造成循环依赖。由于A没创建完成,所以B再创建的时候再容器中获取不到A对象。如何解决这个问题呢?我们把创建中的对象叫半成品,创建完了的叫成本。处于半成品状态的对象能否直接使用?不能使用。如果此时并不是暴露给外部使用,而是内部程序的调用呢?当需要暴露给外部调用的时候,如果完成了赋值操作就不会有问题了。如果你持有了某一个对象的引用,能否在后续步骤的时候进行赋值操作?可以。本质是半成品状态的对象可以在中间过程中使用,实例化和初始化分开执行。原创 2023-04-21 14:02:39 · 667 阅读 · 0 评论 -
Feign报错Method Not Allowed 405 5种解决方案
这段代码是在 HttpURLConnection 中发现的,jdk原生的http连接请求工具类,原来是因为Feign默认使用的连接工具实现类,所以里面发现只要你有body体对象,就会强制的把get请求转换成POST请求。Feign发送Get请求时,采用POJO传递参数 Method Not Allowed 405。默认的是jdk的,可以修改为okhttp 或者 httpclent。使用@Validated验证的时候不支持了,需要手动调用校验方法。原创 2023-01-16 14:01:56 · 8181 阅读 · 0 评论 -
Spring 常用的一些事件
在spring容器初始化前,会通过SpringApplicationRunListener触发ApplicationStartedEvent事件,在容器实例化完成后触发ApplicationReadyEvent事件。SpringApplication 通过SpringFactoriesLoader从META-INF/spring.factories资源中加载其实现类EventPublishingRunListener。启动事件(按先后顺序)ApplicationStartingEvent这个事件在 Spri原创 2022-12-17 10:52:49 · 1631 阅读 · 0 评论 -
springboot实现初始化器的三种方式
通过spring.factories 在resource下新建META-INF文件夹,并新建spring.factories文件 控制台打印信息 firstInitializer is running通过启动类来添加控制台打印信息 SecondInitializer is running通过配置文件添加初始器控制台打印信息 ThirdInitializer is running...原创 2021-12-12 14:53:03 · 442 阅读 · 0 评论 -
Spring Boot 核心注解
一,注解介绍1、@SpringBootApplication这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。2、@Enabl原创 2020-09-08 11:36:49 · 739 阅读 · 0 评论 -
SpringBoot Maven 常见问题
一,SpringBoot打包成jar后运行提示没有主清单属性大家都知道Spring Boot 添加版本依赖有两种方法1,继承入门级父级,要将您的项目配置为继承自spring-boot-starter-parent,请设置parent如下:<!-- Inherit defaults from Spring Boot --><parent> <gr...原创 2020-04-07 15:40:41 · 747 阅读 · 0 评论 -
SpringBoot 自定义 banner (附常用banner)
在线定制网址:https://www.bootschool.net/ascii常用banner```/*** * 瓦瓦 十 * 十齱龠己 亅瓦車己 * 乙龍龠毋日丶 ...原创 2020-04-01 09:00:14 · 1272 阅读 · 0 评论 -
Spring boot 之 spring-boot-starter-cache (整合redis)
一,Spring缓存抽象Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发; Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; Cache接口下Spring提供了各种...原创 2019-10-21 12:00:40 · 14580 阅读 · 4 评论 -
Spring boot 项目 devtools 实现热部署(IDEA)
一,背景当我们的项目(web页面,静态资源,java代码)发上变化的时候我们不希望每一次都手动重启项目。我们用官方的devtools解决这个问题,当然方法有很多。二,配置1,项目配置我们先创建一个如下目录结构的项目pom引入所需的jar以及插件fork设置为true<?xml version="1.0" encoding="UTF-8"?><pro...原创 2019-10-06 17:40:59 · 452 阅读 · 0 评论 -
Spring 自定义bean的生命周期(@Scope)
一,背景Scope注解主要用于配置bean在容器中的生命周期,除了可以配置为singleton和prototype,在Web环境还可以配置为request、session等 值,表示容器会为一次请求或一个会话分配一个bean的实例。如果对bean的生命周期有特殊需求,可以使用自定义的Scope。比如实现一个bean被使用3次后,就获取新的bean实例。二,实现下面以Spring boo...原创 2019-10-05 20:39:03 · 718 阅读 · 0 评论 -
Spring boot 项目 整合 logback (不同级别的日志输出到不同的文件以及不同环境日志输出)
一,需求实现不同级别的日志输出到不同的文件,不同的环境使用不同的日志策略,并且按照大小和时间进行滚动。下面通过一个简单的小例子实现。二,实现1,pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>...原创 2019-10-05 18:44:16 · 2713 阅读 · 0 评论 -
Spring boot AOP 的应用与实现
一、AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,...原创 2019-05-19 16:03:03 · 298 阅读 · 0 评论 -
Spring拦截器和过滤器中读取body内容后Controller数据为空问题解决
1,RequestBody只能读取一遍请求数据流原因:那是因为流对应的是数据,数据放在内存中,有的是部分放在内存中。read 一次标记一次当前位置(mark position),第二次read就从标记位置继续读(从内存中copy)数据。 所以这就是为什么读了一次第二次是空了。 怎么让它不为空呢?只要inputstream 中的pos 变成0就可以重写读取当前内存中的数据。javaAPI中有一个...原创 2019-04-20 16:20:20 · 5287 阅读 · 8 评论 -
Spring Controller 修改,增加请求参数和值
1,为什么会有这种需求?比如:要求对xml类型的特殊字符进行值转换过滤,以防止XSS注入攻击。比如:在请求某些url时,全部需要新加入一个以前代码没有的参数项,其值可能是从cookie/xml/propertis 文件读取的。2,实现方法在这了不能使用拦截器,因为这里面涉及到了请求参数的传递问题,拦截器并不支持把本次请求的数据修改之后传递给下一个拦截器。(不明白不要就继续往下看)。...原创 2019-04-20 13:32:03 · 6870 阅读 · 2 评论 -
Spring 的发展史
一,Spring的发展1,Spring1.x 时代在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。2,Spring2.x时代随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发...原创 2018-08-18 11:26:07 · 4564 阅读 · 0 评论 -
Spring Boot 的介绍,搭建,常用配置
目录一,什么是Spring Boot?二,Spring Boot的优缺点1,优点.2,缺点三,快速入门1,设置spring boot的parent2,导入spring boot的web支持3,添加Spring boot的插件4,编写第一个Spring Boot的应用5,启动应用六,关闭自动配置七,自定义Banner八,全局配置文件九,Star...原创 2018-08-18 11:52:39 · 830 阅读 · 0 评论 -
过滤器,拦截器,aop
一.本文通过实现服务请求时间统计,来说明拦截器,过滤器,以及切片在spring boot中的使用以及配置一.过滤器(Filter)1,配置方法一(实现Filter,并添加@Component注解 )import org.springframework.stereotype.Component;import java.io.IOException;import javax.ser...原创 2018-08-04 17:18:00 · 801 阅读 · 0 评论 -
Spring boot 实现热部署(maven , Jrebel, idea, 本地服务器)
网上流传实现 Spring-boot热部署的方法大概有这么几种:1.springgload2.dev-tools3.Jrebel 废话少说,配置开始(所有破解文件均来源于网络)------------------------------------------------------以下为安装-------------------------------------------...原创 2018-06-11 17:38:37 · 845 阅读 · 0 评论 -
Spring通过ApplicationContextAware和注入的方式获取ApplicationContext(上下文)
获取上下文的方法有两种。1.实现ApplicationContextAware接口import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationCont...原创 2019-04-21 09:23:18 · 3008 阅读 · 2 评论 -
Spring bean初始化之InitializingBean
1,InitializingBean的介绍InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。2,疑问,这个方法和bean的初始化方法比起来谁先执行呢?下面来实际测试下。我们知道注册bean的方法有两种,一种配置文件形式的,一种是注解形式的,下面来进行一一探讨。...原创 2019-04-21 11:10:25 · 2039 阅读 · 2 评论 -
Spring boot 的 CommandLineRunner和ApplicationRunner接口
1,介绍CommandLineRunner、ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自启动)。一个项目可以有多个,优先级用@Order注解指定或者实现Ordered接口。ApplicationRunner是对CommandLineRunner原始参数的进一步封装。2,执行测试以及作用展示可以获取启动参数中的指令2.1 Applica...原创 2019-04-21 13:56:06 · 515 阅读 · 0 评论 -
Spring boot 的 EnvironmentAware接口
1,EnvironmentAware架构import org.springframework.context.EnvironmentAware;import org.springframework.core.env.Environment;import org.springframework.core.env.Profiles;import org.springframework....原创 2019-04-21 14:47:56 · 1677 阅读 · 0 评论 -
Spring 子类注入
1,准备一个父类接口,三个子类接口,一个子类的子类接口public interface FatherInterface {}public class InterfaceOne implements FatherInterface{}public class InterfaceThree implements FatherInterface{}public class I...原创 2019-04-21 15:57:21 · 2299 阅读 · 0 评论 -
Springboot进行事件监听的四种方式
前言讲到事件监听,这里我们说下自定义事件和自定义监听器类的实现方式:自定义事件:继承自ApplicationEvent抽象类,然后定义自己的构造器自定义监听:实现ApplicationListener<T>接口,然后实现onApplicationEvent方法下面讲下4种事件监听的具体实现1.手工向ApplicationContext中添加监听器首先创建MyList...原创 2019-04-21 16:34:52 · 8301 阅读 · 1 评论 -
Spring boot 三种读取配置文件的方法
1,通过注入环境变量来获取配置信息。@Componentpublic class MyConf { @Autowired private Environment env; public void show(){ System.out.println("==========================================="); ...原创 2019-04-21 17:26:04 · 12542 阅读 · 0 评论 -
Spring boot异常处理机制
1、springboot默认错误处理机制spring boot默认异常处理机制用浏览器请求时返回错误页面,其他应用请求时返回json数据。如下编写控制器import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/**...原创 2019-05-02 15:31:28 · 821 阅读 · 0 评论 -
Spring boot编写测试用例(restful)
1.导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>2编写...原创 2019-05-02 17:51:08 · 1418 阅读 · 1 评论 -
Spring Boot 的全局配置
# ===================================================================# COMMON SPRING BOOT PROPERTIES## This sample file is provided as a guideline. Do NOT copy it in its# entirety to your own ...原创 2018-08-18 10:43:22 · 504 阅读 · 0 评论