Springboot笔记-02

1.使用Spring Initializer快速创建Spring Boot项目

IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;

选择我们需要的模块;

向导会联网创建Spring Boot项目;

默认生成的Spring Boot项目;

  • 主程序已经生成好了,我们只需要我们自己的逻辑创建

  • resources文件夹中目录结构

    • static:保存所有的静态资源; js css images;

    • templates:保存动态模板页面,默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);

    • application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;

选中spring web,就可以帮我们自动写那些web依赖

注意:我这运行显示

这是因为版本的问题,我把依赖换了下面的

java 复制代码
<?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.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.qcby</groupId>
    <artifactId>springboot02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot02</name>
    <description>springboot02</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>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

启动成功

编写自己的业务

java 复制代码
package com.qcby.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class hello {

    @RequestMapping("/hello")
    public String hello(){

        return "springboot02";
    }
}

注意:出现问题,访问不到controller,是因为,springboot默认扫描所在包下的子包或者其他,这没在一层


2.配制文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

•application.properties

•application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;

SpringBoot在底层都给我们自动配置好;

YAML(YAML Ain't Markup Language)

YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言;

标记语言: 以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比json、xml等更适合做配置文件;


3.YAML语法

1.基本语法

k:(空格)v:表示一对键值对(空格必须有);

以空格的缩进来控制层级关系;

只要是左对齐的一列数据,都是同一个层级的

属性和值也是大小写敏感;

2.值的写法

字面量:普通的值(数字,字符串,布尔)

k: v:字面直接来写;(注意空格)

字符串默认不用加上单引号或者双引号;

"":双引号;不会转义字符串里面的特殊字符;

特殊字符会作为本身想表示的意思

name: "zhangsan \n lisi":

输出;zhangsan 换行 lisi

'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name: 'zhangsan \n lisi':

输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):

k: v:在下一行来写对象的属性和值的关系;注意缩进

对象还是k: v的方式


数组(List、Set) : 用- 值表示数组中的一个元素

行内写法

3.获取属性值

java 复制代码
package com.qcby.demo;

public class Dog {
    private String name;
    private  Integer age;

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
java 复制代码
package com.qcby.demo;

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

import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 将配制文件中配制的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:告诉springboot将本类中所有属性和配制文件相关的配制进行绑定
 *prefix = "person"  配制文件中那个下面的所有属性进行一一映射
 * 只有这个组件是容器中的组件,才能用容器提供的ConfigurationProperties功能
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastname;
    private Integer age;
    private  Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    @Override
    public String toString() {
        return "Person{" +
                "lastname='" + lastname + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public Integer getAge() {
        return age;
    }

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

    public Boolean getBoss() {
        return boss;
    }

    public void setBoss(Boolean boss) {
        this.boss = boss;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

yml文件:

java 复制代码
person:
  lastname: hello
  age: 15
  boss: false
  birth: 2017/12/12
  maps: {k1: v2,k2: 12}
  lists:
    - lish
    - zhaoca
  dog:
    name: 小黄
    age: 12

test测试:

java 复制代码
package com.qcby.springboot02;

import com.qcby.demo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class Springboot02ApplicationTests {
     @Autowired
    Person person;
    @Test
   public void contextLoads() {
        System.out.println(person);
    }

}

为了方便使用,可以在pom文件中导入配置文件处理器,以后编写配置就有提示

java 复制代码
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

最后结果:

后面我们在详细解释这一块的注解

相关推荐
张望远-长风万里6 分钟前
运维监控专项学习笔记-id:0-需求场景、监控作用、监控能力
运维·笔记·学习
程序员-珍23 分钟前
SpringBoot v2.6.13 整合 swagger
java·spring boot·后端
徐*红31 分钟前
springboot使用minio(8.5.11)
java·spring boot·spring
海里真的有鱼32 分钟前
好文推荐-架构
后端
骆晨学长1 小时前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
AskHarries1 小时前
利用反射实现动态代理
java·后端·reflect
bjzhang751 小时前
SpringBoot开发——整合SpringDoc实现在线接口文档
spring boot·springdoc
世俗ˊ1 小时前
CSS入门笔记
前端·css·笔记
万河归海4281 小时前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
Flying_Fish_roe2 小时前
Spring Boot-Session管理问题
java·spring boot·后端