- 博客(43)
- 收藏
- 关注
原创 SpringBoot原理深入及源码剖析
2. SpringBoot原理深入及源码剖析传统的Spring框架实现一个Web服务,需要导入各种依赖JAR包,然后编写对应的XML配置文件等,相较而言,Spring Boot显得更加方便、快捷和高效。那么,Spring Boot究竟如何做到这些的呢?接下来分别针对Spring Boot框架的依赖管理、自动配置和执行流程进行深入分析2.1 依赖管理 问题:(1)为什么导入dependency时不需要指定版本?在Spring Boot入门程序中,项目pom.xml文件有两个核心
2020-06-28 17:32:25
219
原创 自动配置(启动流程)
2.2 自动配置(启动流程)概念:能够在我们添加jar包依赖的时候,自动为我们配置一些组件的相关配置,我们无需配置或者只需要少量配置就能运行编写的项目问题:Spring Boot到底是如何进行自动配置的,都把哪些组件进行了自动配置?Spring Boot应用的启动入口是@SpringBootApplication注解标注类中的main()方法, @SpringBootApplication能够扫描Spring组件并自动配置Spring Boot下面,查看@SpringBootAppl
2020-06-28 17:20:51
274
原创 自定义配置
1.7 自定义配置spring Boot免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.peroperties文件中,Spring Boot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot是无法识别这些配置文件的,此时就需要我们手动加载。接下来,将针对SpringBoot的自定义配置文件及其加载方式进行讲解1.7.1 使用@PropertyS
2020-06-23 11:27:19
254
原创 随机数设置及参数间引用
1.8 随机数设置及参数间引用在Spring Boot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。下面,针对配置文件中这两种属性值的设置方式进行讲解1.8.1随机值设置在Spring Boot配置文件中,随机值设置使用到了Spring Boot内嵌的RandomValuePropertySource类,对一些隐秘属性值或者测试用例属性值进行随机值注入随机值设置的语法格式为${random.xx},xx表示需要指定生成的随机数
2020-06-23 11:24:52
226
原创 配置文件属性值的注入
1.6 配置文件属性值的注入使用Spring Boot全局配置文件设置属性时:如果配置属性是Spring Boot已有属性,例如服务端口server.port,那么Spring Boot内部会自动扫描并读取这些配置文件中的属性值并覆盖默认属性。如果配置的属性是用户自定义属性,例如刚刚自定义的Person实体类属性,还必须在程序中注入这些配置属性方可生效。Spring Boot支持多种注入配置文件属性的方式,下面来介绍如何使用注解@ConfigurationProperties和@Value注入属性
2020-06-22 20:42:40
139
原创 application.yaml配置文件
1.5.2application.yaml配置文件YAML文件格式是SpringBoot支持的一种JSON超集文件格式,相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml配置文件的工作原理和application.properties是一样的,只不过yaml格式配置文件看起来更简洁一些。YAML文件的扩展名可以使用.yml或者.yaml。application.yml文件使用 “key:(空格
2020-06-22 19:46:09
5051
原创 自定义Stater
2.3 自定义StaterSpringBoot starter机制 SpringBoot由众多Starter组成(一系列的自动化配置的starter插件),SpringBoot之所以流行,也是因为starter。starter是SpringBoot非常重要的一部分,可以理解为一个可拔插式的插件,正是这些starter使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入相应的Bean
2020-06-17 19:16:38
115
原创 执行原理
2.4 执行原理每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法,在该方法中通过执行SpringApplication.run()即可启动整个Spring Boot程序。问题:那么SpringApplication.run()方法到底是如何做到启动Spring Boot项目的呢?下面我们查看run()方法内部的源码,核心代码具体如下:@SpringBootApplicationpublic class SpringbootDemoAppl
2020-06-17 19:15:13
122
原创 随机数设置及参数间引用
1.8 随机数设置及参数间引用在Spring Boot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。下面,针对配置文件中这两种属性值的设置方式进行讲解1.8.1随机值设置在Spring Boot配置文件中,随机值设置使用到了Spring Boot内嵌的RandomValuePropertySource类,对一些隐秘属性值或者测试用例属性值进行随机值注入随机值设置的语法格式为${random.xx},xx表示需要指定生成的随机数
2020-06-16 17:29:41
204
原创 spring-boot-starter-web依赖
2. spring-boot-starter-web依赖*查看spring-boot-starter-web依赖文件源码,核心代码具体如下<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version
2020-06-16 17:26:54
7400
原创 单元测试与热部署
1.4 单元测试与热部署(1)单元测试开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。SpringBoot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试演示:1.添加spring-boot-starter-test测试依赖启动器在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,示
2020-06-15 11:05:46
360
原创 全局配置文件
1.5 全局配置文件全局配置文件能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。接下来,将针对这两种全局配置文件进行讲解 :1.5.1 application.properties配置文件使用Spring Initializr方式构建Spring Boot项目时,会在resour
2020-06-15 11:03:13
1347
原创 Spring Boot基础
1.1 约定优于配置Build Anything with Spring Boot:Spring Boot isthe starting point for building all Spring-based applications. Spring Boot isdesigned to get you up and running as quickly as possible, with minimal upfrontconfiguration of Spring.上面是引自官网的一段话,大
2020-06-12 11:48:15
79
原创 SpringBoot 实现
1.3 SpringBoot 案例实现案例需求:请求Controller中的方法,并将返回值响应到页面(1)使用Spring Initializr方式构建Spring Boot项目本质上说,Spring Initializr是一个Web应用,它提供了一个基本的项目结构,能够帮助我们快速构建一个基础的SpringBoot项目Project SDK”用于设置创建项目使用的JDK版本,这里,使用之前初始化设置好的JDK版本即可;在“Choose Initializr Service URL(选
2020-06-12 11:45:29
366
原创 自定义RedisCacheManager
5.3.2 自定义RedisCacheManager刚刚针对基于 API方式的RedisTemplate进行了自定义序列化方式的改进,从而实现了JSON序列化方式缓存数据,但是这种自定义的RedisTemplate对于基于注解的Redis缓存来说,是没有作用的。接下来,针对基于注解的Redis缓存机制和自定义序列化方式进行讲解1.Redis注解默认序列化机制打开Spring Boot整合Redis组件提供的缓存自动配置类RedisCacheConfiguration(org.springfram
2020-06-11 12:58:45
494
原创 自定义RedisTemplate
5.3.1 自定义RedisTemplate1.Redis API默认序列化机制基于API的Redis缓存实现是使用RedisTemplate模板进行数据缓存操作的,这里打开RedisTemplate类,查看该类的源码信息public class RedisTemplate<K, V>extends RedisAccessor implementsRedisOperations<K, V>, Bea
2020-06-11 12:55:49
1253
原创 基于API的Redis缓存实现
5.2.3 基于API的Redis缓存实现在Spring Boot整合Redis缓存实现中,除了基于注解形式的Redis缓存实现外,还有一种开发中常用的方式——基于API的Redis缓存实现。这种基于API的Redis缓存实现,需要在某种业务需求下通过Redis提供的API调用相关方法实现数据缓存管理;同时,这种方法还可以手动管理缓存的有效期。下面,通过Redis API的方式讲解SpringBoot整合Redis缓存的具体实现(1)使用Redis API进行业务数据缓存管理。在com.la
2020-06-11 12:53:01
572
原创 基于注解的Redis缓存实现
5.2.2 基于注解的Redis缓存实现在Spring Boot默认缓存管理的基础上引入Redis缓存组件,使用基于注解的方式讲解Spring Boot整合Redis缓存的具体实现(1)添加Spring Data Redis依赖启动器。在pom.xml文件中添加Spring Data Redis依赖启动器<dependency> <groupId>org.springframework.boot</groupId> <ar
2020-06-11 12:51:07
1588
原创 基于API的Redis缓存实现
5.2.3 基于API的Redis缓存实现 在Spring Boot整合Redis缓存实现中,除了基于注解形式的Redis缓存实现外,还有一种开发中常用的方式——基于API的Redis缓存实现。这种基于API的Redis缓存实现,需要在某种业务需求下通过Redis提供的API调用相关方法实现数据缓存管理;同时,这种方法还可以手动管理缓存的有效期。下面,通过Redis API的方式讲解SpringBoot整合Redis缓存的具体实现
2020-06-10 20:44:53
345
原创 Spring Boot支持的缓存组件
5.2 整合Redis缓存实现5.2.1Spring Boot支持的缓存组件在Spring Boot中,数据的缓存管理存储依赖于Spring框架中cache相关的org.springframework.cache.Cache和org.springframework.cache.CacheManager缓存管理器接口。如果程序中没有定义类型为CacheManager的Bean组件或者是名为cacheResolver的CacheResolver缓存解析器,Spring Boot将尝试选择并启用以下缓存组
2020-06-10 20:42:38
900
原创 Thymeleaf语法
4.2 ThymeleafThymeleaf是一种现代的基于服务器端的Java模板引擎技术,也是一个优秀的面向Java的XML、XHTML、HTML5页面模板,它具有丰富的标签语言、函数和表达式,在使用Spring Boot框架进行页面设计时,一般会选择Thymeleaf模板4.2.1 Thymeleaf语法常用标签在HTML页面上使用Thymeleaf标签,Thymeleaf 标签能够动态地替换掉静态内容,使页面动态展示。为了大家更直观的认识Thymeleaf,下面展示一个在HTML文件中嵌
2020-06-09 17:07:25
288
原创 支持的视图技术
SpringBoot视图技术4.1 支持的视图技术 前端模板引擎技术的出现,使前端开发人员无需关注后端业务的具体实现,只关注自己页面的呈现效果即可,并且解决了前端代码错综复杂的问题、实现了前后端分离开发。Spring Boot框架对很多常用的模板引擎技术(如:FreeMarker、Thymeleaf、Mustache等)提供了整合支持Spring Boot不太支持常用的JSP模板,并且没有提供对应的整合配置,这是因为使用嵌入式Servlet容器的Spring Boot应用程序对于.
2020-06-09 17:05:02
83
原创 Spring Boot整合Redis
3.3Spring Boot整合Redis除了对关系型数据库的整合支持外,Spring Boot对非关系型数据库也提供了非常好的支持。Spring Boot与非关系型数据库Redis的整合使用(1)添加Spring Data Redis依赖启动器。先在项目的pom.xml文件中添加Spring Data Redis依赖启动器,示例代码如下<dependency> <groupId>org.springframework.boot</groupId&
2020-06-09 17:03:35
231
原创 Spring Boot整合JPA
3.2Spring Boot整合JPA(1)添加Spring DataJPA依赖启动器。在项目的pom.xml文件中添加SpringData JPA依赖启动器,示例代码如下<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></d
2020-06-09 17:01:33
100
原创 注解方式整合Mybatis
注解方式整合Mybatis(1)创建一个用于对数据库表t_comment数据操作的接口CommentMapper @Mapper public interface CommentMapper { @Select("SELECT * FROM t_comment WHERE id =#{id}") public Comment findById(Integer id); }@Mapper注解表示该类是一个MyBati
2020-06-09 16:59:54
518
原创 SpringBoot数据访问
SpringBoot数据访问SpringData是Spring提供的一个用于简化数据库访问、支持云服务的开源框架。它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是使我们可以快速且简单地使用各种数据访问技术。Spring Boot默认采用整合SpringData的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。Spring Data提供了多种类型数据库支持,.
2020-06-09 16:58:17
201
原创 执行原理
2.4 执行原理每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法,在该方法中通过执行SpringApplication.run()即可启动整个Spring Boot程序。问题:那么SpringApplication.run()方法到底是如何做到启动Spring Boot项目的呢?下面我们查看run()方法内部的源码,核心代码具体如下:@SpringBootApplicationpublic class SpringbootDemoAppl
2020-06-09 16:55:41
99
原创 自定义Stater
2.3 自定义StaterSpringBoot starter机制 SpringBoot由众多Starter组成(一系列的自动化配置的starter插件),SpringBoot之所以流行,也是因为starter。starter是SpringBoot非常重要的一部分,可以理解为一个可拔插式的插件,正是这些starter使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入相应的Bean
2020-06-09 16:52:59
133
原创 自动配置(启动流程)第二节
(2)@Import({AutoConfigurationImportSelector.class}):将AutoConfigurationImportSelector这个类导入到spring容器中,AutoConfigurationImportSelector**可以帮助springboot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器(ApplicationContext)中继续研究AutoConfigurationImportSelecto
2020-06-09 16:50:30
94
原创 自动配置(启动流程)第一节
2.2 自动配置(启动流程)概念:能够在我们添加jar包依赖的时候,自动为我们配置一些组件的相关配置,我们无需配置或者只需要少量配置就能运行编写的项目问题:Spring Boot到底是如何进行自动配置的,都把哪些组件进行了自动配置?Spring Boot应用的启动入口是@SpringBootApplication注解标注类中的main()方法, @SpringBootApplication能够扫描Spring组件并自动配置Spring Boot下面,查看@SpringBootAppl
2020-06-09 16:47:15
101
原创 spring-boot-starter-web依赖
(2)问题2: spring-boot-starter-parent父依赖启动器的主要作用是进行版本统一管理,那么项目运行依赖的JAR包是从何而来的?spring-boot-starter-web依赖查看spring-boot-starter-web依赖文件源码,核心代码具体如下<dependencies> <dependency> <groupId>org.springframework.boot</groupId>
2020-06-08 11:14:01
3121
原创 SpringBoot原理深入及源码剖析
SpringBoot原理深入及源码剖析传统的Spring框架实现一个Web服务,需要导入各种依赖JAR包,然后编写对应的XML配置文件等,相较而言,Spring Boot显得更加方便、快捷和高效。那么,Spring Boot究竟如何做到这些的呢?接下来分别针对Spring Boot框架的依赖管理、自动配置和执行流程进行深入分析2.1 依赖管理 问题:(1)为什么导入dependency时不需要指定版本?在Spring Boot入门程序中,项目pom.xml文件有两个核心依.
2020-06-08 11:07:29
249
原创 随机数设置及参数间引用
1.8 随机数设置及参数间引用在Spring Boot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。下面,针对配置文件中这两种属性值的设置方式进行讲解1.8.1随机值设置在Spring Boot配置文件中,随机值设置使用到了Spring Boot内嵌的RandomValuePropertySource类,对一些隐秘属性值或者测试用例属性值进行随机值注入随机值设置的语法格式为${random.xx},xx表示需要指定生成的随机数
2020-06-08 11:05:20
185
原创 使用@Configuration编写自定义配置类
1.7.2 使用@Configuration编写自定义配置类在Spring Boot框架中,推荐使用配置类的方式向容器中添加和配置组件在Spring Boot框架中,通常使用@Configuration注解定义一个配置类,Spring Boot会自动扫描和识别配置类,从而替换传统Spring框架中的XML配置文件。当定义一个配置类后,还需要在类中的方法上使用@Bean注解进行组件配置,将方法的返回对象注入到Spring容器中,并且组件名称默认使用的是方法名,当然也可以使用@Bean注解的name或
2020-06-08 11:02:56
1470
原创 自定义配置
1.7 自定义配置spring Boot免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.peroperties文件中,Spring Boot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot是无法识别这些配置文件的,此时就需要我们手动加载。接下来,将针对SpringBoot的自定义配置文件及其加载方式进行讲解1.7.1 使用@PropertyS
2020-06-08 11:01:13
144
原创 配置文件属性值的注入
1.6配置文件属性值的注入使用Spring Boot全局配置文件设置属性时:如果配置属性是Spring Boot已有属性,例如服务端口server.port,那么Spring Boot内部会自动扫描并读取这些配置文件中的属性值并覆盖默认属性。如果配置的属性是用户自定义属性,例如刚刚自定义的Person实体类属性,还必须在程序中注入这些配置属性方可生效。Spring Boot支持多种注入配置文件属性的方式,下面来介绍如何使用注解@ConfigurationProperties和@Value注入属性
2020-06-08 10:57:41
369
原创 application.yaml配置文件
1.5.2application.yaml配置文件YAML文件格式是SpringBoot支持的一种JSON超集文件格式,相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml配置文件的工作原理和application.properties是一样的,只不过yaml格式配置文件看起来更简洁一些。YAML文件的扩展名可以使用.yml或者.yaml。application.yml文件使用 “key:(空格
2020-06-08 10:51:27
1246
原创 全局配置文件
1.5 全局配置文件全局配置文件能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。接下来,将针对这两种全局配置文件进行讲解 :1.5.1 application.properties配置文件使用Spring Initializr方式构建Spring Boot项目时,会在resour
2020-06-08 10:49:18
1688
1
原创 热部署
(2)热部署 在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大的降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目演示:1.添加spring-boot-devtools热部署依赖启动器**在Spring Boot项目进行热部署测试之前,需要先在项目的pom.xml文件中添加spring-boot-devtools热部署依赖启动器:xml
2020-06-08 10:47:25
184
原创 单元测试与热部署
1.4 单元测试与热部署(1)单元测试 开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试演示:1.添加spring-boot-starter-test测试依赖启动器在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,示
2020-06-08 10:42:21
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人