springBoot

安装

创建

1、创建一个新项目

2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现

3、填写项目信息

4、选择初始化的组件(初学勾选 Web 即可)

5、填写项目路径

6、等待项目构建成功

目录结构

src 主程序编写入口

target  包文件

pom.xml 框架配置文件

打包: maven--》package--》java -jar ./打包后的jar文件

跑起程序

在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到

2、在包中新建一个HelloController类


@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
    
}

自动装配-生命周期

  • pom.xml 存放框架核心依赖

    • 
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>  // 这个为父依赖相当于继承了
          <version>2.2.5.RELEASE</version>
          <relativePath/>
      </parent
      
    • 以后我们导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了

  • 主启动类

    • 配置其他程序启动器

    •  <dependency>
                  <groupId>org.springframework.boot</groupId>
      <!--            所有的springboot管理都是以下方:spring-boot-starter看开头-->
                  <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      
    • spring-boot-starter 后面写的就是框架的使用场景,这里是web那么就是web的应用

    • 框架的所有的场景都被封装成一个个启动器

  • @SpringBootApplication  // 标注在某个类上说明这个类是SpringBoot的主配置类 , SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
    public class SpringBoot2Application {
    
        public static void main(String[] args) {
            // spring boot 应用启动
            SpringApplication.run(SpringBoot2Application.class, args);
        }
    
    }
    
    • @SpringBootApplication 注解

    • @SpringBootConfiguration				//作用:SpringBoot的配置类 ,标注在某个类上 , 表示这是一个SpringBoot的配置类;  
      @EnableAutoConfiguration				// @EnableAutoConfiguration :开启自动配置功能.以前我们需要自己配置的东西,而现在SpringBoot可以自动帮我们配置 ;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效
      @ComponentScan(   						//这个注解在Spring中很重要 ,它对应XML配置中的元素。作用:自动扫描并加载符合条件的组件或者bean , 将这个bean定义加载到IOC容器中
          excludeFilters = {@Filter(
          type = FilterType.CUSTOM,
          classes = {TypeExcludeFilter.class}
      ), @Filter(
          type = FilterType.CUSTOM,
          classes = {AutoConfigurationExcludeFilter.class}
      )}
      )
      public @interface SpringBootApplication {
          // ......
      }
      
  • 总结

    • SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值

    • 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;

    • 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;

    • 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;

    • 有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;

    • 自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中
      
  • 精髓

    • 1、SpringBoot启动会加载大量的自动配置类
      
      2、我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
      
      3、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
      
      4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;
      
      xxxxAutoConfigurartion:自动配置类;给容器中添加组件
      
      xxxxProperties:封装配置文件中相关属性;
      
SpringApplication及run方法
  • SpringApplication 起到的作用:
    1、推断应用的类型是普通的项目还是Web项目
    
    2、查找并加载所有可用初始化器 , 设置到initializers属性中
    
    3、找出所有的应用程序监听器,设置到listeners属性中
    
    4、推断并设置main方法的定义类,找到运行的主类
    
  • run方法

yaml配置注入(自定义配置)

  • 两中配置文件方式

    • application.properties : 语法结构 key=value
    • application.yml : 语法结构 key: value
  • 配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了

  • 优先级1:项目路径下的config文件夹配置文件
    优先级2:项目路径下配置文件
    优先级3:资源路径下的config文件夹配置文件
    优先级4:资源路径下配置文件
    

yaml概述

  • 主要为一种格式

    • // 正常键值对模式
      server:
        prot: 8080
        
      // 对象、Map(键值对)
      k: 
          v1:
          v2:
      行内写法
      student: {name: qinjiang,age: 3}
      
      // 数组( List、set )用 - 值表示数组中的一个元素,比如:
      pets:
       - cat
       - dog
       - pig
      行内写法
      pets: [cat,dog,pig]
      
  • 语法说明

    • 空格不能省略
    • 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
    • 属性和值的大小写都是十分敏感的。

yaml注入配置文件(推荐使用)

  • aml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值!

  • person:
      name: 帅哥
      age: 21
      like: 篮球
      map: {k1: v1,k2: v2}
      list: [20,30,40]
      dog: {name: 旺财,age: 11}\
      $() // 占位符
    
  • 实体类

    • 
      @Component  // 加载实例化
      @ConfigurationProperties(prefix = "person")  // 读取配置文件
      public class Person {
      
          private String name;
          private int age;
          private String like;
          private Map<String,Object> map;
          private List<Object> list;
          private Dog dog;
      
  • tets测试入口方法

    • // 单元测试类
      @SpringBootTest
      class SpringBoot2ApplicationTests {
      
          @Autowired  依赖注入
          private Person person;
      
          @Test
          void contextLoads() {
              System.out.println(person);
          }
      
  • **@PropertySource (value=“calssath:filename”):**加载指定的配置文件;

  • @configurationProperties:默认从全局配置文件中获取值

  • @Validated 字段校验

    • @Eamil
  • 1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加
    
    2、松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。可以测试一下
    
    3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
    
    4、复杂类型封装,yml中可以封装对象 , 使用value就不支持
    

JSR303数据校验及多环境切换

  • Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理

  • 常见的参数

  • 
    @NotNull(message="名字不能为空")
    private String userName;
    @Max(value=120,message="年龄最大不能查过120")
    private int age;
    @Email(message="邮箱格式错误")
    private String email;
    
    空检查
    @Null       验证对象是否为null
    @NotNull    验证对象是否不为null, 无法查检长度为0的字符串
    @NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
    @NotEmpty   检查约束元素是否为NULL或者是EMPTY.
        
    Booelan检查
    @AssertTrue     验证 Boolean 对象是否为 true  
    @AssertFalse    验证 Boolean 对象是否为 false  
        
    长度检查
    @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
    @Length(min=, max=) string is between min and max included.
    
    日期检查
    @Past       验证 Date 和 Calendar 对象是否在当前时间之前  
    @Future     验证 Date 和 Calendar 对象是否在当前时间之后  
    @Pattern    验证 String 对象是否符合正则表达式的规则
    
    .......等等
    除此以外,我们还可以自定义一些数据校验规则
    

多环境切换

  • profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境

  • 我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本

  • 例如:
    
    application-test.properties 代表测试环境配置
    
    application-dev.properties 代表开发环境配置
    
    但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件;
    
    我们需要通过一个配置来选择需要激活的环境:
    
    #比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
    #我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
    spring.profiles.active=dev
    或者
    ---
    server:
      port: 8083
    spring:
      profiles: dev #配置环境的名称
    ---
    

Springboot WEB

静态资源

  • 可识别的目录:

    • "classpath:/META-INF/resources/"
      "classpath:/resources/"
      "classpath:/static/"
      "classpath:/public/"
      

首页和图标

  • 静态资源文件夹下的所有 index.html 页面;被 /** 映射。
    
    比如我访问  http://localhost:8080/ ,就会找静态资源文件夹下的 index.html
    
    新建一个 index.html ,在我们上面的3个目录中任意一个;然后访问测试  http://localhost:8080/ 
    

模板引擎

  • 引入Thymeleaf

    • <!--thymeleaf-->
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值