SpringBoot 配置文件

一. 快速添加依赖

为了快速添加依赖,我们需要先安装一个插件:EditStarters

二. SpringBoot 核心思想:约定大于配置

首先我们写一个helloworld代码:

java 复制代码
@Controller
@ResponseBody
public class TestController {
    @RequestMapping("/sayHello")
    public String say(){
        return "hello world";
    }
}

目录结构:

当我们修改TestController 的所在位置后,发现页面访问不到了。因为spring boot约定,你的代码要放到DemoApplication 同级或者子级目录中才能读取到,否则就会扫描不到

三. SpringBoot 配置文件

.properties

.yml/yaml

说明:

这里的application.yml 的前置只能是application,否则配置不会生效,而yml可以改为yaml

理论上 properties 可以和 yml 一起存在于一个项目中,当两者一起存在一个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了端口号,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties 文件之后, 也会加载 .yml 文件的配置信息。

**•**虽然 。properties 可以和 .yml 共存,但实际的业务当中,我们通常只会采取一种同一的配置文件格式。

四. properties

4.1 properties 基本语法

properties 是以键值对的形式配置的,key 和 value 之间以"=" 连接的,如:

XML 复制代码
#配置项目端口
server.port=8080
#连接数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java_db?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

#自定义配置项
myMessage

4.2 读取配置文件

在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。

@Value 注解使用"${}" 的格式读取,代码如下:

java 复制代码
@Controller
@ResponseBody
public class TestController {
    //如果直接写字符串,会将字符串赋值给该属性
    @Value("${myMessage}")
    String message;

    @RequestMapping("/sayHello")
    @Autowired
    public String say(){
        return "hi "+message;
    }
}

五. yml 基本语法

yml 是树形结构的配置文件,它的基础语法是"key: value",注意 key 和 value 之间使用英文冒号加空格的方式组成的,其中的空格不可省略。

5.1 配置对象

yml 配置如下:

XML 复制代码
users:
  name: 张三
  id: 123
  sex: 男

这个时候就不能用@Value 来读取配置中的对象了,此时需要使用另一个注解@ConfigurationProperties 来读取:

java 复制代码
@Component
@ConfigurationProperties("users")
public class User {
    private int id;
    private String name;
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String s) {
        this.sex = s;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", s='" + sex + '\'' +
                '}';
    }
}

调用类如下:

java 复制代码
@Controller
@ResponseBody
public class UserController {
    @Autowired
    User user;

    @PostConstruct
    public void doPostConstruct(){
        System.out.println(user);
    }
}

5.2 配置集合

yml 配置:

java 复制代码
list:  {names: [张三,李四,王五]}

注入SpringBoot:

java 复制代码
@Component
//@Data是Lombok插件提供的,提供了set和get以及toString方法,不需要在写了
@Data
@ConfigurationProperties("list")
public class ListConfig {
    private List<String> names;
}

使用:

java 复制代码
@Controller
@ResponseBody
public class ListController {
    @Autowired
    ListConfig listConfig;

    @PostConstruct
    public void doPostConstruct(){
        System.out.println(listConfig.getNames());
    }
}

六. 设置不同环境下的配置文件

6.1 创建不同环境下的配置文件

application-dev.properties:开发环境

**•**application-dev.properties:测试环境

**•**application-dev.properties:生产环境

上述配置文件只有 "-" 后面的内容可以修改,其他的都不能修改

6.2 在application.properties 中设置运行环境

java 复制代码
spring.profiles.active=dev
相关推荐
老孙讲技术2 小时前
把没网没电的户外点位接进出画值班台:unBindDeviceInfo 核 SIMCard 与 bindDeviceLive
后端·物联网·音视频开发
万物智能2 小时前
硬件调试三板斧—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·架构
小夏coding3 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
长大19883 小时前
Node.js 22+ 特性实战:用内置能力写微服务与 CLI,能少装一堆依赖
后端
苍何3 小时前
飞书,成了豆包工作的“超级上下文”
后端
苍何3 小时前
会用 AI 做图,已经不够了(分享 3 个牛逼设计 skill)
后端
明月_清风3 小时前
发现一个超系统的 AI Agent 学习地图 —— Agent Atlas 推荐
人工智能·后端·agent
大勇前进4 小时前
设计模式在 JS 中的应用:用 TS 重写经典模式,结合 React / Vue 真实业务场景
后端
MacroZheng4 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
用户29975997127074 小时前
深分页的四种解法,以及为什么说它多半是个伪需求
后端