微服务-SpringBoot

Posted 次日清晨醒着眼睛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务-SpringBoot相关的知识,希望对你有一定的参考价值。

  1. springboot宗旨并非是替代spring,而是通过自动化配置简化spring原有样板化配置。

  2. 只需要将springBoot项目打成Jar然后使用 java -jar运行就可以

  3. spring.application.name 会注册为服务名

  4. @Value(\'$port\')

  5. java -jar xxx.jar --server.port=8888

  6. 属性加载顺序

  • 命令行传入的参数
  • SPRING_APPLICATION_JSON中的属性
    https://blog.51cto.com/u_15870611/5837520
  • java:com/env 中JNDI属性
  • java的系统属性,System.getProperties()
  • 操作系统环境变量
  • random.*随机属性
  • jar包之外dev、test的配置 【运维
  • jar包之内dev、test
  • 当前jar包之外 application.properties 【运维
  • 当前jar包之内 application.properties
  • @configuration @propertySource
  • 默认属性
  1. 监控与管理
    spring-boot-starter-actuator
    https://www.cnblogs.com/duanxz/p/11302110.html

SpringBoot微服务框架概述

SpringBoot微服务框架

  • 2. Spring Boot 微服务框架的特点
  • 3. Spring Boot 应用场景
  • 4. SpringBoot的第一个应用
  • 5. Springboot引导类的main方法有什么作用?
  • 6. SpringBoot的场景启动器
  • 7.@SpringBootApplication探究
  • 8.如何配置SpringBoot的配置文件?

1. Spring Boot概述

SpringBoot是一个微服务框架,基于Spring的,换句话就是Spring中有的功能,在SpringBoot中都能实现。

SpringBoot就是简化了Spring的开发。

微服务与单体架构的区别

  • 单体架构所有的模块全都耦合在一块,代码量大,维护困难,微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
  • 单体架构所有的模块都共用一个数据库,存储方式比较单一,微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
  • 单体架构所有的模块开发所使用的技术一样,微服务每个模块都可以使用不同的开发技术,开发模式更灵活

2. Spring Boot 微服务框架的特点

  1. SpringBoot就是简化了Spring的开发
  2. 嵌入的Tomcat,无需部署WAR文件,使部署变得简单
  3. 简化Maven配置 ,提供了多种场景启动器,使配置变得简单
  4. 自动配置Spring ,提供了默认配置,使配置变得简单
  5. 提供生产就绪型功能,如指标,健康检查和外部配置 ,使监控变简单

3. Spring Boot 应用场景

  1. Spring能够应用的场景
  2. javaWeb应用
  3. 微服务

4. SpringBoot的第一个应用

需求:在浏览器端发送一个hello请求,服务器响应回浏览器一个字符串Hello World

  1. 在Idea中创建Maven工程
  2. 导入SpringBoot相关依赖
  3. 编写主程序启动SpringBoot应用,编写SpringBoot的引导类
    ···
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    //这个类就是SpringBoot的引导类
    @SpringBootApplication
    public class SpringBootApplicationMain
    public static void main(String[] args)
    //固定的写法
    SpringApplication.run(SpringBootApplicationMain.class,args);


    ···
  4. 编写controller,运行main方法
    ···
    @Controller
    public class HelloController
    @RequestMapping("/hello")
    @ResponseBody
    public String hello()
    return "Hello World";


    ···

与Spring开发的不同

  • 没有配置 配置文件
  • 没有部署tomcat
  • 没有大量的Maven依赖

5. Springboot引导类的main方法有什么作用?

SpringBoot启动时通过main方法启动,主要做两方面工作:

1.初始化Spring容器

2.启动tomcat运行项目

SpringBoot在生产环境的部署

  1. 导入一个打包jar包的插件,将项目打包成jar包
    可将项目打包成可执行的jar包,简化了SpringBoot的应用部署,先导入如下插件:
    ···
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>
    spring-boot-maven-plugin
    </artifactId>
    </plugin>
    </plugins>
    </build>
    ···
  2. 直接运行这个jar包

SpringBoot微服务框架概述_配置文件

6. SpringBoot的场景启动器

什么是场景启动器?有什么作用?

spring-boot-starter

作用:Spring Boot的核心启动器,包含了自动配置、日志和YAML

查看parent的starter

SpringBoot微服务框架概述_spring_02

SpringBoot读取resources下的也就是类路径下的application开头的三种配置文件。

parent的stater继承于dependencies

SpringBoot微服务框架概述_配置文件_03

这里包含了Spring的依赖,还包含了很多框架及工具的依赖,这些依赖都已经定义好了版本,版本是由SpringBoot的版本来决定的,这些依赖的版本一定是兼容的。

查看web的starter

  1. tomcat的启动器

SpringBoot微服务框架概述_配置文件_04

  1. spring-web和spring-mvc的依赖

7.@SpringBootApplication探究

@SpringBootApplication注解的作用:

@SpringBootApplication是SpringBoot的主配置类,由该注解配置的类,Springboot 就会运行main方法启动SpringBoot应用

@SpringBootApplication注解是一个组合注解,由三个主要的注解组成

  1. @SpringBootConfiguration注解
    包含了@Configuration注解 修饰的类是一个配置类
    引导类本身就是一个配置类
    ···
    @SpringBootApplication
    public class SpringBootApplicationMain
    public static void main(String[] args)
    //初始化Spring的IOC容器
    ApplicationContext context =SpringApplication.run(SpringBootApplicationMain.class,args);
    Person person = (Person)context.getBean(Person.class);
    System.out.println(person);

    @Bean
    public Person getPerson()
    return new Person();

    ···
    或者单独卸载一个类中
    ···
    //定义成配置类
    //Spring容器在初始化时,自动执行配置类中所有@Bean修饰的方法
    //将这些方法返回的对象,注册在IOC容器中
    @Configuration
    public class MyConfig
    @Bean("person")
    public Person getPerson()
    return new Person();


    ···
  2. @ComponentScan注解 :扫描当前类(引导类)所在的包及子包下的含有@Component注解的类,注册为Bean,相当于以前在Spring配置文件中配置的ComponentScanner这个bean
    在第一个应用中的 HelloController类一定要在引导类的包中或其子包中
  3. @EnableAutoConfiguration注解:开启Springboot的自动配置功能 ,加载各个场景启动中的自动配置类,将配置类中的bean注册在容器中
    可以 通过properties或yml配置文件来修改 容器中bean的属性 ,以达到修改默认配置的目的

8.如何配置SpringBoot的配置文件?

SpringBoot配置文件的作用:

修改Spring Boot自动配置的默认值

SpringBoot 配置文件分为两种:

  1. application.properties配置

SpringBoot微服务框架概述_main方法_05

  1. application.yml配置

SpringBoot微服务框架概述_main方法_06

使用特定的YML语法进行编写

以上是关于微服务-SpringBoot的主要内容,如果未能解决你的问题,请参考以下文章

精通学习微服务架构实战:基于SpringBoot实现微服务

【微服务】- SpringBoot Admin

为啥选择Spring Boot作为微服务的入门级微框架

SpringBoot 搭建微服务初体验

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》

SpringBoot 快速构建微服务体系 知识点总结