初识SpringBoot(一):项目属性配置

本文介绍了Spring Boot中配置文件application.yml的应用方法,包括如何通过不同格式调整服务器端口和命名空间,如何使用属性变量,以及如何在实体类中封装配置。

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

    在前文中,构建第一个项目时,我们有介绍到,目录底下有一个application.properties属性配置文件,它的作用是什么呢?

    我们先简单的写一个简单的配置:

    server.port=8081

    server.context-path=/csdn

    如此两行字加在文件中,便可以改变服务器的端口号,以及命名空间,十分的方便,但是为了让它更加方便,我们通常换为yml文件,加在原resource目录下,同样的配置,格式如下:

    server:

        port: 8081

        context-path: /csdn

    是不是变得更加的简单易读了呢?需要注意的是冒号后一定要加空格,否则无法被读取。

    除此之外,属性文件还可以写一些属性变量,提供给项目使用。

    application.yml配置文件内容如下:

server:
  servlet:
    context-path: /csdn
  port: 8081
arg: I am
age: 56

    controller类的内容如下:

package com.example.first;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Hello {
    @Value("${arg}")
    private String arg;
    @Value("${age}")
    private Integer age;
    @RequestMapping(value = "hello")
    public String hello()
    {
        return "Hello,SpringBoot!"+arg+age;
    }
}
    注:@value()中需要加类似el表达式的美元符号,否则就是取引号中的String值,而不是配置文件中的属性,亲测。

    重启服务器后效果如下:

    同样的,除了在类中属性注入,还可以在属性文件中直接调用属性值,调用方法同样是美元符号,代码如下: 

server:
  servlet:
    context-path: /csdn
  port: 8081
arg: I am
age: 56
content: "arg:${arg},age:${age}"
package com.example.first;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Hello {
    @Value("${arg}")
    private String arg;
    @Value("${age}")
    private int age;
    @Value("${content}")
    private String content;
    @RequestMapping(value = "hello")
    public String hello()
    {
        return content;
    }
}

    运行结果:


    以上情况在少数的属性被使用时十分奏效,但若是需要大量的属性呢?这时我们可以想到java的另外一个特性,封装,如果我们将所有的属性封装到一个实体类中应该如何实现呢?我们先写配置文件,代码如下:
server:
  servlet:
    context-path: /csdn
  port: 8081
boy:    
  arg: I am
  age: 56
    再写一个实体类,代码如下:
package com.example.first;

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

@Component
@ConfigurationProperties(prefix ="boy" )
public class Boy {
    private int age;
    private String arg;

    public int getAge() {
        return age;
    }

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

    public String getArg() {
        return arg;
    }

    public void setArg(String arg) {
        this.arg = arg;
    }
}
    该类写了一个@ConfigurationProperties(prefix="boy")注解,将属性的前缀加在上面,并用组件注解注册了一个bean,再看看Hello.java中的内容:
package com.example.first;

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 javax.naming.Name;

@RestController
public class Hello {
    @Autowired
    private Boy boy;
    @RequestMapping(value = "hello")
    public String hello()
    {
        return boy.getArg()+boy.getAge();
    }
}
    将Boy实体类注入,便可以使用了,截图如下:

    最后的,全文中我们至始自终只使用着一个配置文件,就是application.yml,那么如何使用其他命名的配置文件呢?使用多个配置文件又有怎么样的好处呢?有些时候在不同的环境下我们需要不同的参数配置,如开发环境和实际运行环境,此时,我们需要编写多个配置文件。

    我们先编写两个配置文件,命名分别为application-dev.yml,application-active.yml,前后者的代码分别是:

server:
  servlet:
    context-path: /csdn
  port: 8081
boy:
  arg: I am
  age: 56
server:
  servlet:
    context-path: /csdn
  port: 8081
boy:
  arg: I am
  age: 100
    再保留原配置文件,改代码如下:
spring:
  profiles:
    active: dev
    此时的测试结果如下,表示调用的是开发环境的配置文件:

    再将参数改为active,得到的结果为:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值