Spring & Spring Boot
文章平均质量分 79
关于Spring Boot基础与高级应用。
圣斗士Morty
Java开发者,技术学习爱好者,费曼技巧学习法践行者
展开
-
常用自定义注解
导航一、方法计时器二、valid 参数校验的通用返回一、方法计时器注解类:MethodTimer@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface MethodTimer {}处理器(需要AOP和spring的支持):MethodTimerProcessor@Slf4j@Component@Aspectpublic class MethodTimerProcessor {原创 2021-07-29 09:22:44 · 567 阅读 · 0 评论 -
Spring 全局异常捕获
引言前后端分离开发,后台有时候会出现不可预知的异常(运行时异常),在实际生产中通常需要统一返回符合一定响应结构的异常信息给前端,这一方面可以避免用户看到后台的报错信息,一方面也是保护后端程序免受恶意用户的试探。简单总结一个Spring框架下的全局异常捕获的实现方式——@RestControllerAdvice。一、代码演示import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.Exce原创 2021-01-27 21:41:33 · 1389 阅读 · 0 评论 -
Spring —— 容器内部逻辑
引言上一篇关于IoC容器的详解《Spring —— IoC 容器详解》真是工程浩大,可以说Spring官网对核心中的核心IOC容器做了非常全面的使用说明,包括在《Spring揭秘》中让我一直没有成功的Method Injection,官网也解决了我的疑惑,并最终实验成功(未来会另起一篇单独对“方法注入”做以总结)。Spring官网的容器说明虽然全面,但是对于容器内部的处理并未深入解释,因此本篇博客做理论性的补充,总结自王富强老师的《Spring揭秘》第四章——“容器背后的秘密”。而且,本篇文章在工作原创 2020-11-15 13:07:40 · 411 阅读 · 0 评论 -
Spring —— IoC 容器详解
引言本篇博客总结自官网的《The IoC Container》,其中会有一些自己的语言描述和理解,大部分会摘抄官网的解释说明。主要介绍什么是 IoC 容器,什么是 Bean,依赖,Bean Definition,Bean Factory 等概念知识,帮助扫除 spring framework 框架知识盲区。一、什么是 Spring IoC 容器?什么是 Bean?IoC 也可以理解为依赖注入(dependency injection)(参考《控制反转 IOC 与依赖注入 DI》),它是一个只原创 2020-10-08 21:39:08 · 1742 阅读 · 0 评论 -
控制反转 IOC 与依赖注入 DI
引言简单总结和巩固一下spring的核心原理——IOC和DI的概念,为什么IOC要叫控制反转?IOC和DI的关系是怎样的?一、IOC 控制反转初学者可能很好奇,为什么spring framework的对象托管容器叫做 IOC容器(Inversion of control)?设想这样一个场景,A对象依赖B对象。如果 new A,就需要先 new B,这是最基本的依赖创建方式。我们管 A 去申请 B 对象的过程,称为“资源查找”,可以理解为 A 对象需要向虚拟机申请一个资源 B 对象。传统原创 2020-10-02 10:57:37 · 475 阅读 · 0 评论 -
Spring Boot 设置 ASCII banner 艺术字
引言无意中看到Spring boot 项目的 resources 目录下有一个 banner.txt ,打开一看,居然是ASCII 字符画。于是兴起,简单研究了一下。Spring boot 可以加载 resources 目录下的 banner.txt 文件,将字符画在启动之初输出到日志或控制台。步骤生成字符画的方式网上有很多,如果是中文,或者更奇葩的图形,那么可以去搜索一下。这...原创 2019-10-18 11:06:25 · 1121 阅读 · 0 评论 -
Spring Boot 实用开发技巧————Eclipse 远程调试
引言在之前的开发当中,都会进行本地项目启动,然后向本地服务发起请求来进行 Debug 调试代码,这也是开发人员最常见的调试操作。但是当项目逐渐成型,慢慢的将各个模块部署到服务器后,调试的手段可能就仅仅剩下查看执行日志了。然而和本地 Debug 代码不同,通过日志排查问题是非常不方便的,你需要在特定的位置打印日志预测问题可能出现的原因,无法精确、快速的定位问题。为了解决这个问题,JVM 提供...原创 2019-10-13 00:52:42 · 964 阅读 · 0 评论 -
Spring Boot整合Redis——自定义RedisSerializer
引言spring boot简单引入redis依赖,并使用RedisTemplate进行对象存储时,需要使存储对象实现Serializable接口,这样才能够成功将对象进行序列化。RedisTemplate默认使用的序列化机制是JdkSerializationRedisSerializer,但实际开发中,往往会以json的形式来保存数据。那么可以通过两种方式来实现这种要求,第一就是将保存的对...原创 2019-01-20 18:16:33 · 13816 阅读 · 3 评论 -
Java实现用户头像上传(修改默认文件大小限制)
概述每次说起文件上传,就不得不提一下前端的实现方式,说来也奇怪,本博主最热门的博客居然也是文件上传,3万多的访问量占了总访问量的一多半:《传统form表单提交方式的文件上传与文件存储》,而且,今天搜索“form表单提交文件” 百度第一篇居然就是这篇自己写的文章(下图留个纪念,不知道以后会不会有变化 哈哈)但是由于这篇文章写得比较早,博客玩的还不6,文章排版很糟糕,因此自己都不愿意看,今...原创 2018-08-25 14:04:39 · 31795 阅读 · 28 评论 -
Spring Boot + JSP
目录引言Maven依赖JSP页面application.properties配置controller结果展示引言在尝试使用shiro的时候需要页面登录的加持,但是长期的前后端分离工作,导致页面的知识几乎忘光。突然想通过jsp这种简单的形式来学习其他的技术,作为一个易上手的页面渲染引擎,还是不错的。Maven依赖首先说明,springboot默认不支持jsp因...原创 2018-07-26 22:16:03 · 410 阅读 · 0 评论 -
Spring Boot——Redis安装配置与应用整合
引言Spring Boot默认以ConcurrentHashMap作为缓存容器,但默认的缓存容器在简单的场景使用还是可以的,而作为NoSQL的代表,Redis可以做内存数据库、消息中间件都是不错的,而且有RedisDesktopManager作为可视化管理工具,让我们能够像使用一般数据库一样编辑内存中的数据,因此,大多数企业都要求能够掌握基本的Redis的使用。本篇博客将介绍如下内容:...原创 2019-01-17 00:48:54 · 790 阅读 · 0 评论 -
Spring Boot————默认缓存应用及原理
引言应用程序的数据除了可以放在配置文件中、数据库中以外,还会有相当一部分存储在计算机的内存中,这部分数据访问速度要快于数据库的访问,因此通常在做提升数据访问速度时,会将需要提升访问速度的数据放入到内存中,我们称之为缓存。最常用的缓存方式是使用并发容器,因为具有比较高的并发性能,因此Spring的默认缓存策略就是使用ConcurrentHashMap作为缓存容器。下面将会逐步展开缓存的概念与...原创 2019-01-13 22:18:15 · 1160 阅读 · 0 评论 -
Spring Boot————Spring Boot启动流程分析
一、引言Spring Boot 的启动虽然仅仅是执行了一个main方法,但实际上,运行流程还是比较复杂的,其中包含几个非常重要的事件回调机制。在实际生产开发中,有时候也会利用这些启动流程中的回调机制,做一些项目初始化的工作,比如内存初始化等。所以,学习Spring Boot启动流程非常重要。二、启动流程概述SpringApplication.run(Object, String...)...原创 2018-12-09 21:57:18 · 1044 阅读 · 0 评论 -
Spring Boot————应用启动时的监听机制测试
引言本文承接前面的《Spring Boot————Spring Boot启动流程分析》,主要测试一下ApplicationContextInitializer、SpringApplicationRunListener、ApplicationRunner、CommandLineRunner这四个接口实现之下的组件是何时在Spring Boot项目启动时创建并执行相关方法的。应用测试使用的是S...原创 2018-12-23 11:56:31 · 593 阅读 · 0 评论 -
Spring Boot————Spring Data JPA简介
引言JPA是Java 持久化API的缩写,是一套Java数据持久化的规范,Spring DataSpring Data项目的目的是为了简化构建基于Spring 框架应用的数据访问技术,包括对关系型数据库的访问支持。另外也包含非关系型数据库、Map-Reduce框架、云数据服务等等。Spring Data包含的子项目有:Spring Data CommonsSpring D...原创 2018-12-09 11:16:47 · 602 阅读 · 0 评论 -
Docker必备知识整理
Docker简介Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker是用Go语言编写的。Docker也是一个命令行工具,它提供了中央“docker”执行过程中所需的所有工具。 Doc...原创 2018-03-27 23:45:15 · 676 阅读 · 0 评论 -
Spring Boot————AOP入门案例及切面优先级设置
看了这篇文章,如果你还是不会用AOP来写程序,请你打我!! =.=|||引言Spring AOP是一个对AOP原理的一种实现方式,另外还有其他的AOP实现如AspectJ等。AOP意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,是OOP面向对象编程的一种补足。它是软件开发中的一个热点技术,Spring AOP 也是Spring框架的核心特性之一(另...原创 2018-12-08 00:28:03 · 8359 阅读 · 3 评论 -
Spring Boot————ApplicationListener实现逃课事件监听
引言上一篇文章转了一篇关于ApplicationListener用于在Web项目启动时做一些初始化的用法。但是,在实际生产过程中,当一个事件产生,又是如何被onApplicationEvent()方法监听到,并执行一系列动作呢?简单搜索了一下,终于掌握了从定义事件、发布事件到最后监听方法执行的常规用法,在此记录。据我了解,spring 底层对监听机制的实现应该用到了观察者模式,关于观察...原创 2018-12-06 17:26:49 · 354 阅读 · 0 评论 -
Spring Boot————Web应用启动时自动执行ApplicationListener用法
原文:《web服务启动spring自动执行ApplicationListener的用法》引言我们知道,一般来说一个项目启动时需要加载或者执行一些特殊的任务来初始化系统,通常的做法就是用servlet去初始化,但是servlet在使用Spring bean时不能直接注入,还需要在web.xml配置,比较麻烦。今天介绍一下使用spring启动初始化的方法。其实很简单,只需两步就可以了。在开...转载 2018-12-06 15:40:51 · 3262 阅读 · 0 评论 -
Spring Boot——@ConfigurationProperties与@Value的区别
引言Spring Boot从配置文件中取值的方式有两种,一种是批量注入@ConfigurationProperties,另一种是单独注入@Value。它们之间除了批量与单独取值的区别之外,还存在着其他一些使用方式,本篇博客将详细讲解这两种注解之间的区别和使用方式。一、区别比较注:松散绑定,指配置文件中的属性名与Bean中的属性名大小写不完全一致,但是字母相同的情况。比如...原创 2018-11-09 11:36:26 · 864 阅读 · 0 评论 -
Spring Boot —— YAML配置文件
引言首先,YAML并不是仅仅可以使用在Java项目中,它是一种类似于json结构的标记语言,可以为所有的编程语言服务。它强调更直观的层级表示,比较适合描述配置文件中的层级关系。Spring Boot可以识别后缀名为".properties"或“.yaml”或“.yml” 的全局配置文件。以yaml或yml为后缀的配置文件都是YAML文件。一、与其他配置格式的比较与其他配置文件的格式...原创 2018-11-09 11:37:51 · 5367 阅读 · 0 评论 -
Spring Boot面试杀手锏————自动配置原理
引言不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。当然,作为Spring Boot的精髓,自动配置原理的工作过程往往只有在“面试”的时候才能用得上,但是如果在工作中你能够深入的理解Spring Boot的自动配置原理,将无往不利。Spr...原创 2018-11-07 14:11:15 · 196589 阅读 · 137 评论 -
Sprint Boot————@Qualifier、@Primary
引言使用@Autowired自动注入时:如果注入的接口有多个实现类,如下所示:那么如果不指定具体是哪个实现类的Bean,在Spring Boot启动时就会发生异常(下图请点击查看): 异常的描述信息非常简单,就是告诉开发者,自动注入的地方需要一个Bean,而spring 容器却找到了3个实现类的Bean。Action(可以采取的行动): 考虑使用@Primary注解...原创 2018-10-31 19:06:07 · 9792 阅读 · 1 评论 -
Spring Boot + Mybatis 快速整合
引言最近在工作结束后抽时间学习了一下mybatis的知识,因为之前有学习过,但是经久不用,也未曾踏实地整理,因此有所淡忘。super meeting会议管理系统是我厂最近开发的一套会议预约平台。持久层框架经讨论,选为灵活优秀的半自动持久层框架Mybatis。关于mybatis的有点和简介不做本系列学习博客的重点,在此不做记录。学习的方式采用视频+实践的学练组合方式。结合一直接触的s...原创 2018-08-12 22:37:53 · 651 阅读 · 0 评论 -
双剑合璧————Spring Boot + Mybatis Plus
引言最近在学习Mybatis Plus的使用,希望通过spring boot快速将mybatis plus整合进来。对于springboot项目,mybatis plus团队也有自己的启动器 :mybatis-plus-boot-starter。这个依赖内部已经整合了mybatis-spring,也包括非快速启动的mybatis-plus(这个依赖需要额外的配置数据源等信息),所以如果您在...原创 2018-06-23 15:10:11 · 94291 阅读 · 59 评论 -
Swagger使用————接口参数注解的使用缺陷
问题描述在使用springboot开发web项目时,用到了swagger框架,来生成web api文档。但是其中有一项是举例说明参数的结构,如下图:但是,这个功能真的是非常方便,因为可以让前端开发人员第一时间得知参数的内部结构是什么样的,这尤其适用于那些json体结构的参数。网上的例子都是这样的:但是,我无论如何都弄不出来这个样子,前前后后研究了有好几个小时。终于找出了问题。问题原因网上的api接...原创 2018-05-08 23:54:11 · 70571 阅读 · 33 评论 -
Spring Boot————静态方法如何调用Spring容器中的Bean
问题分析在使用静态方法的时候,某些情况下,需要使用类似自动注入的Bean来实现某些业务逻辑。一般的非静态方法,可以很容易的通过在方法所在的类中@Autowired自动将依赖的Bean注入到本类中,并操作。静态方法在使用同样的操作流程时,由于静态调用的约束,需要在@Autowired注入时,将Bean对象设置为是static。然而在调用时却发生“空指针”异常。代码如下:Service...原创 2018-04-26 00:39:03 · 19090 阅读 · 0 评论 -
SpringBoot————JPA快速使用
本篇博客源码地址:https://github.com/DragonWatcher/ease-run概述Hibernate与JPA本篇博客中的web项目选用Hibernate作为持久层框架。在Spring Boot中,我们需要了解另一个概念:JPA上一句话可能有些歧义,并不是说JPA就是Spring Boot中的概念。而是Java Persistence Api,中文译名为:Jav...原创 2018-04-14 16:52:35 · 46679 阅读 · 24 评论 -
SpringBoot————快速搭建springboot项目
完成项目的创建信息浏览器打开SPRING INITIALIZR网址:http://start.spring.io/ 如下图所示完成配置:1.完成基础项目配置2.相关名称3.依赖jar包,如果是web项目,那么这里选择的Web依赖已经包含了开发web项目所必须的服务器以及Spring MVC框架;JPA是持久层API,其中包含HIbernate,但是如果使用MyBatis需...原创 2018-04-14 01:51:02 · 9442 阅读 · 7 评论 -
Swagger自动接口文档生成框架————springboot整合swagger总结
swagger简介:swagger是一款开源的api接口文档生成工具。Swagger的项目主页:https://swagger.io/ 目前比较流行的做法是在代码中加入swagger相关的注释,然后,利用小工具生成swagger.json或者swagger.yaml文件。springboot将swagger变得更加简单:springboot拥有自己的自动配置特性,而swagg...原创 2018-03-06 16:59:07 · 6924 阅读 · 0 评论 -
SpringBoot学习——@Autowired自动注入报:could not be found问题的理解和解决方案
微服务应用程序中,我们会通过Java后台的方式发送http请求并调用其他注册在Spring Cloud Eureka server上的微服务,之前我们可能会手动封装一个Http发送请求类,然后通过其中的sendGet或者sendPost方法借由java IO的形式发送出去。但是,上述方法过于繁琐和和臃肿,我们使用org.springframework.web.client.RestTempla...原创 2017-12-14 12:51:49 · 75446 阅读 · 4 评论 -
Spring Boot配置文件application properties配置详解
# ===================================================================# COMMON SPRING BOOT PROPERTIES## This sample file is provided as a guideline. Do NOT copy it in its# entirety to your own appl...转载 2017-12-13 10:48:04 · 556 阅读 · 0 评论 -
Spring Boot————简介与Spring时代的承接
引言最近,公司正在开发一个景区系统的项目,涉及到Spring Boot框架的使用,在此记录下Spring Boot框架应该知道的基础知识。一、产生SpringBoot是顺应现在微服务(MicroServices)理念而产生的一个微框架(同类还有Dropwizard),用来构建基于Spring框架的标准化的独立部署应用程序。二、SpringBoot快速开始:我们使用Maven构建...原创 2017-12-03 10:13:19 · 575 阅读 · 0 评论 -
Spring Boot————单元测试
引言由于spring boot在启动时通常会先行启动一些内置的组件,比如tomcat。因此,spring boot的测试类一般需要加一些简单的注解。测试类示例@RunWith标记一个运行期SpringRunner.class(它是一个SpringJUnit4ClassRunner的子类,名字简短而已,未做任何扩展);@SpringBootTest注解指定在测试类上用来运行基于Spr...原创 2019-03-17 23:14:05 · 339 阅读 · 0 评论 -
Spring Boot————BeanCreationNotAllowedException异常分析
引言在对数据库进行新增记录的JUnit测试时,抛出一个BeanCreationNotAllowedException异常:异常分析与解决异常信息太长,图片截不下,粘贴来看:Exception in thread "pool-2-thread-1" org.springframework.beans.factory.BeanCreationNotAllowedException...原创 2019-03-17 23:53:59 · 6276 阅读 · 0 评论 -
Spring Boot————Profile配置
引言Spring Boot 的Profile配置,可以极大简化配置难度,可以有多种配置形式,根据位置有不同的生效方式。探讨问题Spring Boot 的 Profile 配置是为了解决不同环境可能存在的多种配置问题。举例来说明的话,就是当我们开发完程序,部署到 测试环境或者生产环境的时候,可能需要配置不同的数据库连接,或者不同的日志打印级别。通过Spring Boot的Prof...原创 2019-08-20 20:14:00 · 288 阅读 · 0 评论