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依赖
注意:我这运行显示
这是因为版本的问题,我把依赖换了下面的
<?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>
启动成功
编写自己的业务
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.获取属性值
package com.qcby.demo;public class Dog {private String name;private Integer age;@Overridepublic 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;}
}
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;@Overridepublic 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文件:
person:lastname: helloage: 15boss: falsebirth: 2017/12/12maps: {k1: v2,k2: 12}lists:- lish- zhaocadog:name: 小黄age: 12
test测试:
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 {@AutowiredPerson person;@Testpublic void contextLoads() {System.out.println(person);}}
为了方便使用,可以在pom文件中导入配置文件处理器,以后编写配置就有提示
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>
最后结果:
后面我们在详细解释这一块的注解