网络日志

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的引导类@SpringBootApplicationpublic class SpringBootApplicationMain { public static void main(String[] args) {

    //固定的写法
    SpringApplication.run(SpringBootApplicationMain.class,args);

    }}···

  4. 编写controller,运行main方法···@Controllerpublic class HelloController { @RequestMapping("/hello")@ResponseBodypublic 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包

6. SpringBoot的场景启动器

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

spring-boot-starter

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

查看parent的starter

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

parent的stater继承于dependencies

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

查看web的starter

  1. tomcat的启动器

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

7.@SpringBootApplication探究

@SpringBootApplication注解的作用:

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

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

  1. @SpringBootConfiguration注解

    包含了@Configuration注解 修饰的类是一个配置类

    引导类本身就是一个配置类···@SpringBootApplicationpublic 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);

    }@Beanpublic Person getPerson(){

    return new Person();

    }···或者单独卸载一个类中···//定义成配置类//Spring容器在初始化时,自动执行配置类中所有@Bean修饰的方法//将这些方法返回的对象,注册在IOC容器中@Configurationpublic 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配置

  1. application.yml配置

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

对文章中内容感兴趣的小伙伴可以搜索微信公众号:敲代码的老贾,领取相应资料