【SpringBoot2 学习笔记】初识SpringBoot项目

一、介绍

SpringBoot 是由Pivota团队提供的全新框架,其设计目的就是用来简化Spring应用的初始搭建以及开发过程。

基于Idea进行开发,需要注意确保联网且能够加载程序框架结构

Springboot程序的优缺点

  • 起步依赖(简化依赖配置)
  • 自动配置(简化常用工程相关配置)
  • 辅助功能 (内置服务器,tomcat…)

二、创建SpringBoot项目

方式一 Idea

在这里插入图片描述在这里插入图片描述
新增一个controller
在这里插入图片描述
然后运行这个文件StudySpringBootApplication
运行结果
在这里插入图片描述
通过浏览器访问:
在这里插入图片描述

方式二 官网

通过官网的初始化功能创建:https://start.spring.io/
在这里插入图片描述

以上demo实现的过程:

  • parent
    – 开发SpringBoot程序要继承spring-boot-starter-parent;
    – spring-boot-startr-parent中定义了若干个依赖管理;
    – 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突;
    – 继承parent的形式也可以采用引入依赖的形式实现效果;
    – 主要目的是减少不同版本依赖的冲突

  • startr
    –SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

  • 实际开发
    – 使用任意坐标,仅书写GAV中的G和A,V右SpringBoot提供,除非SpringBoot未提供对应版本V
    – 如发生坐标错误,再指定Version(要小心版本冲突)

三、配置文件

3.1 properties 格式

在/resources/application.properties 配置文件中配置

# 服务器端口
server.port=80

# 日志配置
# 日志输出等级
logging.level.root=info

3.2 yaml格式

server:
	port:80

3.3 yml格式(推荐)

这个是目前最常用的格式
语法规则:

  • 大小写敏感;
  • 属性层次关系使用多行描述,每行结尾使用冒号结束;
  • 使用缩进表示层级关系,同级左侧对其,只允许使用空格(不允许使用Tab键);
  • 属性值前面添加空格(属性名与属性值之间使用冒号 + 空格作为分隔);
  • # 表示注释
  • 字面值表示方式
boolean: TRUE    # 大小写都可以 
float: 3.14
null: ~     # ~ 表示null
string: HelloWorld   # 字符串可以直接写
string2: "Hello World"   # 可以使用双引号包裹特殊字符
date: 2018-02-17   # 日期必须使用
datetime: 2018-02-17T15:02:31+08:00  # 表示日期和时间之间使用T连接,最后用+代表时区

# 列表数组
subject:     
	- java
	- 前端
	- 大数据

likes: [王者荣耀,刺激战场]

# 对象数组格式
users: 	
	- name: Tom
	  age: 4
    - name: Jerry
      age: 5  
users2: [{name:tom,age:4}, {name:Jerry, age:5}]

3.3.1 常用的配置参数

server:
  port: 80

logging:
  level:
    root: info

3.3.2 怎么读取配置文件值

使用@Value读取单个数据,属性名引用方式: ${一级属性名.二级属性名…}

server:
  port: 80

logging:
  level:
    root: info

country: china

users:
  name: Yio

enterprise:
  subject:
    - Java
    - python
    - C++
package com.yio.studyspringboot.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Yio
 */
// Rest 模式
@RestController
@RequestMapping("/demo")
public class DemoController {

    // 读取配置yml文件中的数组单一数据
    @Value("${country}")
    private String country;

    @Value("${users.name}")
    private String name;

    @Value("${enterprise.subject[0]}")
    private String subject;

    @GetMapping
    public String getById(){
        System.out.println("SpringBoot is running...");
        System.out.println("country--->" + country);
        System.out.println("name---->" + name);
        System.out.println("subject---->" + subject);
        return "springboot is running...";
    }
}

3.3.3 yml 中变量使用

baseDir: \Yio\JavaHome\tudySpringBoot\Yio

testDir: ${baseDir}\test

在controller中

package com.yio.studyspringboot.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Yio
 */
// Rest 模式
@RestController
@RequestMapping("/demo")
public class DemoController {
    @Value("${testDir}")
    private String testDir;

    @GetMapping
    public String getById(){

        System.out.println("testDir---->" + testDir);
        return "springboot is running...";
    }
}

3.3.4 读取全部数据

在controller中封装一个Environment对象
注意:但是这个不是最常用的方式

 @Autowired
    private Environment env;

// 通过以下方法获取
env.getProperty("users.name")

3.3.5 通过定义bean加载部分

示例
MyDataSource.java

package com.yio.studyspringboot;

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

@Component  // 声明为springboot 管理的bean
@ConfigurationProperties(prefix = "datasource")  // bean要管理的数据数组的主节点名称
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;

    /**
     * 获取
     *
     * @return driver
     */
    public String getDriver() {
        return driver;
    }

    /**
     * 设置
     *
     * @param driver
     */
    public void setDriver(String driver) {
        this.driver = driver;
    }

    /**
     * 获取
     *
     * @return url
     */
    public String getUrl() {
        return url;
    }

    /**
     * 设置
     *
     * @param url
     */
    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * 获取
     *
     * @return username
     */
    public String getUsername() {
        return username;
    }

    /**
     * 设置
     *
     * @param username
     */
    public void setUsername(String username) {
        this.username = username;
    }

    /**
     * 获取
     *
     * @return password
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置
     *
     * @param password
     */
    public void setPassword(String password) {
        this.password = password;
    }

    public String toString() {
        return "MyDataSource{driver = " + driver + ", url = " + url + ", username = " + username + ", password = " + password + "}";
    }
}

在controller中使用

    // 通过自定义bean,获取部分数据
    @Autowired
    private MyDataSource myDataSource;
    
    System.out.println("---------------------------------------------");
    System.out.println(myDataSource.getUsername());
    System.out.println(myDataSource.getPassword());

3.4 共存优先级

在sprintboot 工程中,三个类型的配置文件共存的情况下,优先级如下properties > yml > yaml

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值