SpringBoot

SpringBoot概述

SpringBoot主要是简化spring应用开发
主要功能:

  • 自动配置
  • 起步依赖
  • 辅助功能:如内嵌服务器
    SpringBoot并不是对Spring功能上的增强,而是提供一种快速使用Spring的方式。

Spring的缺点

  • 配置繁琐:如xml配置
  • 依赖繁琐:如导坐标

SpringBoot快速入门

在这里插入图片描述
主要步骤:
1.导入依赖

    <groupId>top.murongkang</groupId>
    <artifactId>springboot-helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--springboot工程需要继承的父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>
    <!--web开发的起步依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.编写controller

package top.murongkang.controller;



import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author murongkang
 * @date 2020-07-12 22:08
 */
@RestController
public class HelloController {
    @RequestMapping("/world")
    public String  helloWorld(){
        return "helloWrold springboot!";
    }
}

3.创建启动引导类

package top.murongkang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/*Springboot 引导类,是项目的入口*/
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}

4.测试访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringBoot配置文件

有两种形式:.properties和yml
在这里插入图片描述
那么这三种配置文件是有优先级的。
.properties>.yml>ymal
如果三种文件中同时配置了相同的属性,则优先级低的属性会被覆盖。
在这里插入图片描述
在这里插入图片描述

读取 配置文件的3种方式

1.使用@Value获取单个值方便,如果多个就不是很方便了。
2.使用Environment对象,注入即可,获取所有配置值,适合用在值比较多的时候
3.使用@ConfigurationProperties(prefix = “persion”)注解,把配置文件值映射到实体对象中的属性。也就是配置文件和实体对象绑定。

代码如下:
pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.itheima</groupId>
    <artifactId>springboot-init</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-init</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
  <!--  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>-->
</project>

Controller

package com.itheima.springbootinit.controller;

import org.omg.CORBA.Environment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/*1.使用@Value获取单个值方便,如果多个就不是很方便了。
* 2.使用Environment对象,注入即可,获取所有配置值,适合用在值比较多的时候
* 3.使用@ConfigurationProperties(prefix = "persion")注解,把配置文件值映射到实体对象中的属性
* 也就是配置文件和实体对象绑定*/

/**
 * @author murongkang
 * @date 2020-07-13 22:27
 */
@RestController
public class HelloWorldController {

/*
    @Value("${name}")     //注意:这个name必须和配置文件中的键名(name)一样。
    private String name;   //这个name和配置中的键name无关

    @Value("${persion.name}")
    private String name2;
*/

  /*  @RequestMapping("/hello2")
    public String helloWorld2(){
        System.out.println(name);           //控制台输出abc,可见可以获取配置文件name的值
        return "SpringBoot222";
    }
*/
 /*   @Value("${address[0]}")   //数组写法
    private  String address;
    @Value("${address[1]}")
    private  String address1;*/

    @Autowired
    private Persion persion;

    @RequestMapping("/hello4")
    public String hello(){
        System.out.println(persion);

        return "persion" ;
    }
    @RequestMapping("/hello5")
    public String hellok(){
        for (String sex : persion.getSex()) {
            System.out.println(sex);
        }

        return "persion" ;
    }

 /*   @RequestMapping("/hello3")
    public String helloWorld3(){
        System.out.println(name2);           //控制台输出abc,可见可以获取配置文件name的值
        return name2;
    }*/

    @RequestMapping("/hello")
    public String helloWorld(){
        return "SpringBoot2";
    }
}

Persion实体对象:

package com.itheima.springbootinit.controller;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.stereotype.Component;

import java.util.Arrays;

/**
 * @author murongkang
 * @date 2020-07-21 22:44
 */
@Component    //被Springboot识别
@ConfigurationProperties(prefix = "persion")   //指定配置文件前缀
public class Persion {
    private String name;
    private String address;
    private int age;
    private  String[] sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getAge() {
        return age;
    }

    public String[] getSex() {
        return sex;
    }

    public void setSex(String[] sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Persion{" +
                "name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", age=" + age +
                ", sex=" + Arrays.toString(sex) +
                '}';
    }
}

applision.yml配置文件:

server:
  port: 8082
name: abc
persion: 
  name: mu
  age: 23
  address: beijing
  sex: 
    -- 女

#name: murong



# yaml:数据格式写法3种
#  1.对象(map):键值对的集合
persion1:
  name: zhangsan
# 行内写法,注意空格
persion2: {name: zhangsan}

# 2.数组 :每组按次序排列的值
address:
  - beijing
  - shanghai


#行内写法
address1: [beijing,shanghai]
#3.纯量:单个的、不可在分的值,比如 20true等像是常量
msg: 'hello \n world'  #单引忽略转义字符 ,也就是直接原样输出\n
msg1: "hello \n world" #双引识别转义字符,输出两行。

#参数引用
age: 21
persion3:
  age: ${age}  #引用上面定义的age值

SpringBoot多种配置环境

在这里插入图片描述
多profire文件配置方式:
在这里插入图片描述
yml配置方式
在这里插入图片描述
对于使用yml多文档配置方式,可能你会说,以后不是还是需要改配置文件么。那么我们可以采用另一种方式来切换配置。通过IDEA工具如下:配置虚拟机参数,有两种。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后期,项目上线或测试可以通过命令行参数来改配置,好处就是不用改代码,就可以动态改配置环境
首先:项目打包,找到路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
*

Profile小结*

在这里插入图片描述

SpringBoot内部配置加载顺序

优先级高的配置文件先加载
在这里插入图片描述
在这里插入图片描述

外部配置加载顺序

https://blog.csdn.net/wu2374633583/article/details/80075198?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.channel_param

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值