SpringBoot---配置文件

Spring Boot的配置文件相较于自己整合Spring简单了很多,我们不需要配置太多的内容,就可以让Spring正常运行;但是在有些时候,我们还是需要修改一些配置,或者添加一些自己需要配置参数。

1. 自定义属性

当我们创建Spring Boot项目时,系统会在我们的src/main/resources文件夹下创建一个application.properties的配置文件;我们也可以将其修改为application.yml,因为Spring Boot支持这种文件格式。

在application.yml自定义一组属性:

my:
  name: 小明
  age: 12

我们只需要在属性上添加@Value("${属性名}")注解,就可以读取到这个配置:

@RestController
public class MyController {
    @Value("${my.name}")
    private String name;
    @Value("${my.age}")
    private int age;

    @RequestMapping(value = "/my")
    public String my(){
        return name + ":" + age;
    }
}

现在我们访问这个接口显示的信息:

小明:12


2. 将一组属性注入实体类

当我们有很多配置属性的时候,这时我们会把这些属性作为字段来创建一个javabean,并将属性值赋予给他们,比如:

my:
  name: 小明
  age: 12
  number:  ${random.int}
  uuid: ${random.uuid}
  max: ${random.int(10)}
  value: ${random.value}
  message: hi,I'm ${my.name}

其中配置文件中用到了${random} ;这个这个东西暂时不说;

然后我们创建一个java bean,用来接收这些属性:

@ConfigurationProperties(prefix = "my")
@Component
public class My {
    private String name;
    private Integer age;
    private Integer number;
    private String uuid;
    private Integer max;
    private String value;
    private String message;
    
	// 省略getter和setter方法
}

需要加个注解@ConfigurationProperties,并加上它的prrfix属性。另外需要添加@Component。另外spring-boot-configuration-processor依赖要添加,不添加会有警告,但是不影响使用。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

另外application类的EnableConfigurationProperties注解可以不加,原因不明,可能新版本的关系。

@RestController
@EnableConfigurationProperties({My.class})
public class MyController {

    @Autowired
    private My my;

    @RequestMapping(value = "/my")
    public My my(){
        return my;
    }
}

这样请接口,信息就会返回为json格式。

3. 自定义配置文件

这里我们据需创建一个新的配置文件。比如叫test.yml

com:
  user:
    name: 小明
    age: 12

我们在创建一个实体类用于接收:

@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.user")
@Component
public class User {
    private String name;
    private Integer age;

    // 省略getter和setter方法
}

这里有几个问题至今原因不明:

  • 网上找了很多,都是说类上应该添加@Configuration,而不是@Component,但是我试了很多次,都是不对的
  • 自定义的配置文件只能是.properties这个格式,不支持.yml

这里我们调用一下:

@RestController
@EnableConfigurationProperties({My.class, User.class})
public class MyController {

    @Autowired
    private My my;

    @Autowired
    private User user;

    @RequestMapping(value = "/my")
    public My my(){
        return my;
    }

    @RequestMapping(value = "/user")
    public User user(){
        return user;
    }
}

这样的访问接口,我们就能得到注入的信息了。

4. 多个环境配置文件

在现实的开发环境中,我们往往会有不同的环境配置;格式为application-{profile}.properties,其中{profile}对应你的环境标识,如下:

  • application-test.properties:测试环境
  • application-dev.properties:开发环境
  • application-prod.properties:生产环境

这里怎么使用呢?我们只需要在application.yml中配置即可:

spring:
  profiles:
    active: dev

这样,我们当前使用的环境,就是application-dev.properties中的配置;

我们也可以在启动的时候直接去修改所使用的环境:

java -jar xxx.jar spring.profiles.active=prod
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值