• 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模式,就可以在打印台上看到匹配报告;

  • 相关阅读:
    代办事项
    问题总结2015/05/05
    Android Studio 更新
    Android 防内存泄露handler
    android canvas 绘图笔记
    Android Studio compile error : enum constant INSTANT_RUN_REPLACEMENT does not exist in class
    android Studio 配置LUA 开发环境
    Android 性能优化之(1)-MAT使用教程
    shareSdk打包报错解决办法
    Android 事件分发机制
  • 原文地址:https://www.cnblogs.com/gxyandwmm/p/9703999.html
Copyright © 2020-2023  润新知