【第2章】SpringBoot配置文件

文章目录


前言

SpringBoot工程创建后,会为我们提供一个默认的配置文件(application.properties),配置文件主要用于那些可能发生变化且经常改变的属性值。


一、编写配置信息

SpringBoot为我们提供了很多的内置配置信息,如:server.port等,如果我们在配置文件中定义了属性值则会覆盖默认值,未声明则使用默认值;

我们也可以自定义属性值。
主要的配置文件又分为properties和yml两种

1. properties

properties以键值对的形式存在。

bash 复制代码
#内置配置
spring.application.name=spring-boot3
server.port=8080
#自定义配置
#prop.ip=127.0.0.1
prop.port=80
prop.user=admin
prop.pwd=123456
#数组
prop.singer=ChanteMoore,凡希亚,那英

IDEA使用properties配置文件需要配置ascii转换,否则会乱码 确保IDE和JVM都配置为使用UTF-8编码,可以添加 -Dfile.encoding=UTF-8 参数。

2. yml

bash 复制代码
#内置配置
spring:
  application:
    name: spring-boot3
server:
  port: 8081
#自定义配置
yml:
  #ip: 127.0.0.1
  port: 80
  user: admin
  pwd: 123456
  #数组
  singer: ChanteMoore,凡希亚,那英

application.properties优先级更高

二、获取配置信息

1.直接获取

java 复制代码
package org.example.springboot3.controller;

import org.example.springboot3.config.SpringBootConfig;
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;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * Create by zjg on 2024/5/17
 */
@RestController
@RequestMapping("/config/")
public class ConfigController {
    @Value("${prop.ip:127.0.0.1}")
    private String ip;
    @Value("${prop.port:80}")
    private int port;
    @Value("${prop.user}")
    private String user;
    @Value("${prop.pwd}")
    private String pwd;
    @Value("${prop.singer}")
    private String []singer;
    //直接获取
    @RequestMapping("001")
    public String config001(){
        Map<String,Object> map=new HashMap<>();
        map.put("ip",ip);
        map.put("port",port);
        map.put("user",user);
        map.put("pwd",pwd);
        System.out.println(Arrays.toString(singer));
        System.out.println(map);
        return map.toString();
    }
    @Autowired
    SpringBootConfig springBootConfig;
    //配置类形式
    @RequestMapping("002")
    public String config002(){
        System.out.println(springBootConfig);
        return springBootConfig.toString();
    }
}

ChanteMoore, 凡希亚, 那英

{port=80, ip=127.0.0.1, pwd=123456, user=admin}

2.配置类形式

java 复制代码
package org.example.springboot3.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;

/**
 * Create by zjg on 2024/5/17
 */
@Configuration
@ConfigurationProperties(prefix = "yml")
public class SpringBootConfig {
    @Value("${yml.ip:127.0.0.1}")
    private String ip;
    private int port;
    private String user;
    private String pwd;
    private String []singer;

    public void setIp(String ip) {
        this.ip = ip;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public void setSinger(String[] singer) {
        this.singer = singer;
    }

    @Override
    public String toString() {
        return "SpringBootConfig{" +
                "ip='" + ip + '\'' +
                ", port=" + port +
                ", user='" + user + '\'' +
                ", pwd='" + pwd + '\'' +
                ", singer=" + Arrays.toString(singer) +
                '}';
    }
}

SpringBootConfig{ip='127.0.0.1', port=80, user='admin', pwd='123456', singer=ChanteMoore, 凡希亚, 那英}


总结

回到顶部
更多内置属性
Properties和Yaml在线转换

properties语法更加直观,但键容易重复。

yml配置文件语法更加简洁,层级更加清晰。

相关推荐
墨神谕2 分钟前
RabbitMQ 从入门到实战:核心原理、消息模型、可靠性机制与 Spring Boot 实战
spring boot·rabbitmq·java-rabbitmq
SL_staff16 分钟前
物模型三要素误用避坑指南:属性、事件、服务的正确建模逻辑
java
高频因子挖掘机20 分钟前
股票分红送转后价格“断层”:前复权、后复权和不复权该怎么选?
后端·github·api
一条泥憨鱼21 分钟前
【Redis | 黑马点评】短信登录功能 源码深度分析
java·redis·后端·session·黑马点评
威哥爱编程25 分钟前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·spring boot·后端
威哥爱编程30 分钟前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
java·spring boot·后端
小蒜学长31 分钟前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·uni-app·家政服务
做个文艺程序员31 分钟前
MQ第07篇:Java SaaS多租户消息隔离实战:RabbitMQ VHost+RocketMQ Tag+命名空间架构
spring boot·rabbitmq·rocketmq·saas·多租户
敲代码的彭于晏1 小时前
2026 K8s 零基础入门:手把手教你一步步搭建 Kubernetes 集群
java·运维·全栈
希洛兔1 小时前
状态模式详解:让对象随内部状态自动改变行为
java·设计模式·状态模式