Springboot复习2

spring boot概述及自动配置原理

SpringBoot的优缺点:

优点:快速构建项目。对主流开发框架的无配置集成。项目可独立运行,无须外部依赖Servlet容器。-提供运行时的应用监控。极大的提高了开发、部署效率。与云计算的天然集成。缺点:如果你不认同spring框架,也许这就是缺点。

微服务与单体应用的区别?

微服务需要部署N个应用,还需要其它外部应用支撑(注册中心、网关等),部署、运维成本较高。集群、高可用方案无需额外处理;单体应用只需要部署一个应用即可,相对于微服务部署、运维成本较低。高可用、集群方案需要另外处理;

 

1.1 概述

Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置

 

1.2 为什么使用Spring boot

J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。

总结:因为它简单

 

1.3 Spring boot是什么

一站式整合所有应用框架的框架;并且完美整合Spring技术栈; https://spring.io/projects

Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

Starters:场景启动器 (你只要导入对应的场景启动器,当前场景启动器依赖的一堆jar包,当前场景需要的jar包都给你导进去)

@EnableAutoConfiguration //允许自动配置

 

 

1.4 Spring boot 优点

  • 快速创建独立运行的Spring项目以及与主流框架集成
  • 使用嵌入式的Servlet容器,应用无需打成WAR包
  • starters自动依赖与版本控制(场景启动器)
  • 大量的自动配置,简化开发,也可修改默认值
  • 无需配置XML,无代码生成,开箱即用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成

 

案例:

自定义配置文件时,需加入@PropertySource注解 value=配置文件名

@Component
  @ConfigurationProperties(prefix = "person")
  @PropertySource(value = "person.properties")
  public class Person {
      @Value("${person.name}")
      private String name;
      private int age;
      private String sex;
      private Dog dog;
      private List pets;

 

 

数据效验

加入

<!--效验的场景启动器-->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
  </dependency>

效验email

@Component
  @ConfigurationProperties(prefix = "person")
  //@PropertySource(value = "person.properties")
  @Validated
  public class Person {
      //@Value("${person.name}")
      @Email
      @NotNull
      private String name;
      /*@Value("${person.age}")*/
      private int age;
      private String sex;
      private Dog dog;
      private List pets;

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_微服务

 

导入一个这个就相当于把Spring、SpringMVC,tomcat导入了

//导入web场景启动器
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

 

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_配置文件_02

通过java代码来实现bean的注入,不再使用xml形式了

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_微服务_03

 

@ConditionalOnMissingBean

^条件注解,如果有这个类型的bean就不再注入,没有就注入

要想测试,需要先把bean里交给sping容器管理的compent注解去掉

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_spring_04

程序入口注入两个加上条件注解

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_配置文件_05

控制层返回数据

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_微服务_06

不管返回person1还是2 结果都是注入张三1

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_微服务_07

两个条件注解去掉的话,都会注入,控制层返回谁前台就显示谁

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_spring_08

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_微服务_09

springboot 各个版本对应的mysql驱动版本 springboot 1.0 2.0_spring_10

条件注解作用:由此可以看出自动配置就是根据条件注解来辅助实现的