正文前先来一波福利推荐:

福利一:

百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的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应用总结更新的更多相关文章

  1. spring boot 框架 启动更新项目,以及生成 "实体_"文件

    1.更新项目 clean  --->  更新项目 ---> package--->refresh 即可.(这几个步骤一个不能够少) 2.项目中的类的依赖关系存在,但是无法导入依赖 m ...

  2. spring boot 配置文件动态更新原理 以Nacos为例

    配置文件的动态更新 通常获取配置文件的方式 1, @Value 2. @ConfigurationProperties(Prefix) 如果是在运行时要动态更新的话, 第一种方式要在bean上加@Re ...

  3. spring boot 服务 正确关闭方式

    引言 Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的 ...

  4. 40 篇原创干货,带你进入 Spring Boot 殿堂!

    两个月前,松哥总结过一次已经完成的 Spring Boot 教程,当时感受到了小伙伴们巨大的热情. 两个月过去了,松哥的 Spring Boot 教程又更新了不少,为了方便小伙伴们查找,这里再给大家做 ...

  5. 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!

    从2016年1月开始写博客,默默地更新<Spring Boot系列教程>,从无人问津到千万访问,作为一个独立站点(http://blog.didispace.com),相信只有那些跟我一样 ...

  6. Spring Boot 2.1.0 已发布,7 个重大更新!

    距离<重磅:Spring Boot 2.0 正式发布!>已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Spring Boot 2.1.0 都 ...

  7. spring boot 自动更新静态文件和后台代码 -- 热部署

    在spring boot使用的过程中, 发现我修改了静态文件, 前台刷新后, 没有任何变化, 必须重新启动, 才能看到, 这简直不能让人接受. 那有什么方法来解决这个问题呢. Baidu之后, 得到了 ...

  8. Spring Boot 利用 nginx 实现生产环境的伪热更新

    当我们在服务器部署Java程序,特别是使用了 Spring Boot 生成单一 Jar 文件部署的时候,单一文件为我们开发单来的极大的便利性,保障程序的完整性.但同时对我们修改程序中的任何一处都带来重 ...

  9. spring boot项目开发中遇到问题,持续更新

    1.JPA中EntityManager不能执行建表语句,提示要加事务Error:javax.persistence.TransactionRequiredException: Executing an ...

随机推荐

  1. Redis两种秒杀抢购思路

    方式一:使用DECR减库存 /** * 外卡进入减库存 * @param competitionQuarterInDTO * @return */@Overridepublic int otherCa ...

  2. 大量示例彻底搞懂Linux查找,which,whereis,locate,find

    前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. which which命令会在P ...

  3. firefox中遇到的offsetX的问题

    项目中遇到一个问题,滚轮缩放或鼠标移动svg的时候,当鼠标放置在svg元素上时,firefox浏览器中的offsetX和offsetY是不准确的,导致缩放和移动会产生便宜,其实问题不是firefox计 ...

  4. [Bash]LeetCode192. 统计词频 | Word Frequency

    Write a bash script to calculate the frequency of each word in a text file words.txt. For simplicity ...

  5. [Swift]LeetCode968.监控二叉树 | Binary Tree Cameras

    Given a binary tree, we install cameras on the nodes of the tree. Each camera at a node can monitor  ...

  6. MySQL将utf8字符集改为utf8mb4

    前言 今天在查看tomcat日志时发现了一个错误:Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0 ...

  7. Python内置函数(23)——format

    英文文档: format(value[, format_spec]) Convert a value to a “formatted” representation, as controlled by ...

  8. java.lang.OutOfMemoryError: unable to create new native thread问题排查以及当前系统最大进程数量

    1. 问题描述 线上某应用出问题,查看日志 这一组服务器是2台,每台都有.配置为64G,使用7G,空余内存非常多 2. 问题排查 环境变化:程序迁移到新机器,新机器是CentOS 7,程序运行账号由原 ...

  9. 版本管理工具Git(一)简要介绍

    版本管理工具不但可以备份而且还能记录版本,也就是同一个东西不同时期的状态同时可以跟踪追溯.版本管理工具由CVS.SVN.Git.GitHub. 最早的版本管理工具CVS,因为多人开发项目导致工作很难协 ...

  10. github访问很慢解决方案

    首先要解决的就是这个访问速度的问题: 获取Github相关网站的ip 访问https://www.ipaddress.com,拉下来,找到页面中下方的“IP Address Tools – Quick ...