Springboot基础篇-基础配置

本文介绍了SpringBoot的基础配置步骤,包括复制工程、修改pom与配置端口号。详细讲解了SpringBoot的配置文件类型,如properties和yml,并探讨了配置文件加载的优先级。此外,还阐述了YAML格式的特点、语法规则以及如何在SpringBoot中读取和引用YAML配置。最后,提到了如何将配置信息封装为对象以供程序使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复制工程

step1

在文件夹中复制一个模块,删除至只剩src和pom

step2

修改pom中的artifactId为模块名

step3

导入模块

 修改端口号

 

 在application.properties文件中增加server.port

使用80端口时访问路径可以不加端口号

http;//localhost/users

认识一下其他配置

spring.main.banner-mode=off            
spring.banner.image.location=fire.png
logging.level.root=info

第一个控制启动springboot时的logo是否打印在控制台

第二个可以自己定义logo,可以是图片

第三个设置日志的提示等级

这些配置是关联着服务器配置的,如果starter类没有了,这些配置就不能被识别出来了

也就是说这个配置怎么写是看你用的什么技术。

通过官方查找所有的配置

Common Application Properties

springboot配置文件的类型

 yml配置文件是主流

配置文件加载优先级

通过给三个配置文件设置不同的端口号,检查启动时用的哪个端口号来判断配置文件加载的优先级

properties > yml > yaml

假如你维护的程序中使用的配置文件是properties,那么你要是配yml配置文件就没有用了

不同配置文件的配置内容如果不相同的话会叠加,假如properties配置端口号,yml配置日志,则会同时产生效果,只有相同的属性才会产生覆盖问题

YAML数据格式

YAML(YAML  Ain't  Markup Language)  yaml是和XML,properties作用一样的数据格式,含义是非标记语言。

YAML格式数据的文件拓展名可以是yml或yaml,通常用yml

YAML格式容易阅读,以数据为核心,重数据轻格式

YAML语法规则

#单个键值对
user: oo
#对象格式
users:
 name: zz
 age: 18
#数组格式
users0:
 -zz
 -cc
 -ll
users00: [zz,cc,ll]
#数组格式
users1:
 -name: cc
 -age: 19
users11: [name: cc,age: 19]
#数组对象格式
user2:
 -
  name: cc
  age: 20
 -
  name: ll
  age: 21
users22: [{name: cc,age: 20},{name: ll,age: 21}]

yaml数据的读取

@RestController
@RequestMapping("/books")
public class BookController {
    //获取单个数据
    @Value("${user}")
    private String user;//00
    @Value("${users.age}")
    private String age; //18
    @Value("${users00[0]}") //zz
    private String num1;
    @Value("${users22[0].name}")
    private String name2;

    @GetMapping
    public String getById(){
        System.out.println(user);
        System.out.println(age);
        System.out.println(num1);
        System.out.println(name2);
        return "springboot";
    }
}

yaml文件中的变量引用

写的数据之间需要相互引用

yaml支持转移字符,但需要用引号包起来

/t = 空格

 输出  c:\user    242

yaml文件中的变量引用

 yaml文件中有多少配置变量,读取配置信息时就需要创建多少变量,如何解决这个问题?

boot提供了一个属性可以把所有的变量全加载

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    Environment environment;
    @GetMapping
    public String getById(){
        System.out.println(environment.getProperty("user"));
        return "springboot";
    }
}

读取yaml引用类型属性数据

Environment将所有的数据都封装了,调用时还得是需要记住属性名,能不能只封装对于我们来说有用的数据呢?

step1:定义数据模型封装在yaml文件中

2.定义spring管理的bean

@Component
//指定加载的数据
@ConfigurationProperties("datasource")//这里不知道是什么原因不能用dataSource,只能用datasource
public class Datasource {
    private String driver;
    private String url;
    private String username;
    private String password;

    public Datasource() {
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "DataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    Datasource myDataSource;
    @GetMapping
    public String getById(){
        System.out.println(myDataSource.getDriver());
        return "springboot";
    }
}

其实tomcat就是通过这种方式往日志里面读取信息,将你配置的信息封装为一个对象,然后在你的程序中将这个对象声明就能引用你配置的内容。

 context-path是上下文路径

容器怎么调用你配置的信息呢?定义某个类,加载配置信息为一个对象,然后读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值