Spring Boot应用总结更新
正文前先来一波福利推荐:
福利一:
百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。
福利二:
毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。
获取方式:
微信关注 精品3分钟 ,id为 jingpin3mins,关注后回复 百万年薪架构师 ,精品收藏PPT 获取云盘链接,谢谢大家支持!

-----------------------正文开始---------------------------
一、SpringBoot的产生背景:
SpringBoot的产生背景伴随着微服务,微服务的相关概念参考上一篇的博客,分布式架构理论;
微服务的宏观概念理解:
将一个大应用拆分成多个小应用,一个小应用是一个小型的服务,可以通过协议进行互通;
每个小应用是一个可独立替换和独立升级的服务;
下面看SpringBoot的优点:

SpringBoot构建应用构建的分布式简单框架:

二、Srping Boot启动Web应用
使用的编辑工具: Intellij Idea;
项目管理工具Maven:maven的安装和配置以及原理性总结,请参考下一篇文章;
工程结构:

项目遇到的问题:
在我们配置controller层的时候,使用@Controller注解的时候,如下:

使用浏览器进行Request请求的时候,会遇到下面的问题:

问题出现在:
没有使用模版。即@Controller 用来响应页面,@Controller必须配合模版来使用。spring-boot 支持多种模版引擎包括:
1 FreeMarker
2 Groovy
3 Thymeleaf (Spring 官网使用这个)
4 Velocity
5 JSP (貌似Spring Boot官方不推荐,STS创建的项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录)
本文以Thymeleaf为例介绍使用模版,具体步骤如下:
在pom.xml文件中添加如下模块依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
因此,我们就直接使用@RestController注解来处理http请求来,这样简单的多。
@RestController
Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。
即@RestController是@ResponseBody和@Controller的组合注解。
@RestController
public class HelloController { @RequestMapping(value="/hello",method= RequestMethod.GET)
public String sayHello(){
return "hello";
}
}
三、配置文件:
1、application.properties
2、application.yml
YAML的语法:
K:空格v kv键值对 注意不要漏掉空格
以空格的缩进表示层级关系;只要左对齐的一列数据则表示同一个层级;
eg:
serve:
port: 8080
path: hello
字面量(数字,字符串,布尔)
字符串默认不需要加上单引号或者双引号 eg: port: 8080
如果加上双引号则不会转义字符串中的特殊字符
如果加上单引号则会进行特殊字符进行转义;
对象,Map键值对
在下一行写对象的属性和值的关系,需要注意缩进
eg:
friends:
lastName: zhangsan
age: 20 另一种写法:
friends: {lastName: zhangsan, age: 20}
数组(List, Set):
用 -空格 表示数组中的一个元素:
eg:
pets:
- cat
- dog
行内写法:
pets: [cat, dog]
@ConfigurationProperties and @Value



在Person类上加上ConfigurationProperties 注解;与配置文件信息进行绑定,
使用Application.properties的方式:

除了使用使用ConfigurationProperties 方式外还可以使用@Values方式来获得配置文件中的信息;
eg:


@PropertySource
在Resource中配置resource.properties文件,使用 PropertySource 然后加载其中的内容:

@importResource
使用配置Bean.XML方式配置Bean,然后通过 importResource 方式获得Bean对象;
eg:


通过定义配置类,然后同过@Bean方式产生对象;

配置文件中的占位符


Profile 配置多文件环境:
application.properties


application.yml

命令行的方式指定配置文件:

******************************命令行的优先级高于配置文件!***********************************
使用打包的方式:

使用虚拟机的方式:

配置文件位置的优先级:

举一反三:在spring中classpath的路径是下面的路径,也就是java文件编译后存放的目录位置,classes文件夹位置。

配置项目的访问路径:

高低优先级文件实现 配置互补 高优先级配置大环境配置 低优先配置详细的配置

还可以任意的指定磁盘上一个某个位置的的配置文件,前提是在项目打包好以后,进行命令号操作,一般用在运维的场景下使用;


加载顺序总结:

除了万能的命令行方式以外,还有下边的方式;

详细说明如下:

@Conditional

在application.properties文件中开启Debug模式,就可以在打印台上看到匹配报告;


Spring Boot应用总结更新的更多相关文章
- spring boot 框架 启动更新项目,以及生成 "实体_"文件
1.更新项目 clean ---> 更新项目 ---> package--->refresh 即可.(这几个步骤一个不能够少) 2.项目中的类的依赖关系存在,但是无法导入依赖 m ...
- spring boot 配置文件动态更新原理 以Nacos为例
配置文件的动态更新 通常获取配置文件的方式 1, @Value 2. @ConfigurationProperties(Prefix) 如果是在运行时要动态更新的话, 第一种方式要在bean上加@Re ...
- spring boot 服务 正确关闭方式
引言 Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的 ...
- 40 篇原创干货,带你进入 Spring Boot 殿堂!
两个月前,松哥总结过一次已经完成的 Spring Boot 教程,当时感受到了小伙伴们巨大的热情. 两个月过去了,松哥的 Spring Boot 教程又更新了不少,为了方便小伙伴们查找,这里再给大家做 ...
- 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!
从2016年1月开始写博客,默默地更新<Spring Boot系列教程>,从无人问津到千万访问,作为一个独立站点(http://blog.didispace.com),相信只有那些跟我一样 ...
- Spring Boot 2.1.0 已发布,7 个重大更新!
距离<重磅:Spring Boot 2.0 正式发布!>已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Spring Boot 2.1.0 都 ...
- spring boot 自动更新静态文件和后台代码 -- 热部署
在spring boot使用的过程中, 发现我修改了静态文件, 前台刷新后, 没有任何变化, 必须重新启动, 才能看到, 这简直不能让人接受. 那有什么方法来解决这个问题呢. Baidu之后, 得到了 ...
- Spring Boot 利用 nginx 实现生产环境的伪热更新
当我们在服务器部署Java程序,特别是使用了 Spring Boot 生成单一 Jar 文件部署的时候,单一文件为我们开发单来的极大的便利性,保障程序的完整性.但同时对我们修改程序中的任何一处都带来重 ...
- spring boot项目开发中遇到问题,持续更新
1.JPA中EntityManager不能执行建表语句,提示要加事务Error:javax.persistence.TransactionRequiredException: Executing an ...
随机推荐
- 【RL-TCPnet网络教程】第26章 RL-TCPnet之DHCP应用
第26章 RL-TCPnet之DHCP应用 本章节为大家讲解RL-TCPnet的DHCP应用,学习本章节前,务必要优先学习第25章的DHCP基础知识.有了这些基础知识之后,再搞本章节会有事半功 ...
- 惊奇!用Java也能实现比特币系统
最近区块链技术突然爆火,身边做技术的朋友茶余饭后不谈点区块链什么的都被认为是跟不上时代了,为啥会这样了? 这其实跟比特币价格去年的突飞猛进是分不开的,比特币价格从去年初不到一千美金到今年初最高接近两万 ...
- js 生成随机炫彩背景
在浏览 https://ghost.org/xxxx/ 时. 可以使用 background-size: cover; 加上很小的像素图,放大后实现炫彩背景效果. 使用 js canvas 随机生成小 ...
- 大量示例彻底搞懂Linux查找,which,whereis,locate,find
前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. which which命令会在P ...
- [Swift]LeetCode491. 递增子序列 | Increasing Subsequences
Given an integer array, your task is to find all the different possible increasing subsequences of t ...
- [Swift]LeetCode669. 修剪二叉搜索树 | Trim a Binary Search Tree
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that a ...
- Web系统大规模并发:电商秒杀与抢购-----面试必问
一.大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战.如果Web系统不做针对性的优化,会轻而易举地陷入到异常状态.我们现在 ...
- 从零开始学习PYTHON3讲义(七)条件分支和哥德巴赫猜想
<从零开始PYTHON3>第七讲 人生是由无数个选择组成,每个选择都有不同的限定条件.现在来说人生有点早是吧:)不过事实的确是这样的. 程序也充满着选择,满足不同的条件,则运行不同的运算. ...
- IntelliJ IDEA中创建Web聚合项目(Maven多模块项目)
Eclipse用多了,IntelliJ中创建Maven聚合项目可能有小伙伴还不太熟悉,我们今天就来看看. IntelliJ中创建普通的Java聚合项目相对来说比较容易,不会涉及到web操作,涉及到we ...
- SpringBoot入门教程(一)详解intellij idea搭建SpringBoot
最近公司有一个内部比赛(黑客马拉松),报名参加了这么一个赛事,在准备参赛作品的同时,由于参赛服务器需要自己搭建且比赛产生的代码不能外泄的,所以借着这个机会,本地先写了个测试的demo,来把tomcat ...