Java 笔记 之 SpringBoot(配置文件)

SpringBoot默认配置好了许多配置,使开发变得不在那么繁琐;但是,默认的配置,肯定不能满足变化多端、环境各异的系统的需要,因此SpringBoot提供了两种配置方式:
properties和yml

1. properties文件

项目创建之后,SpringBoot会默认在src/main/resources下帮你创建一个application.properties文件
这里写图片描述
默认创建的application.properties文件里面没有内容,是一个空文件,不过springboot已经默认配置好了很多配置,如果要自定义,则可以在这个文件中进行配置。
SpringBoot有多到没法记的可配置项,所以说有开发工具的自动提示功能也是极好,自动提示的配置名和配置的内容(不过注意要使用Spring Properties Editor打开才会提示)。

自动提示设置:

  • 1.Help->Eclipse Marketplace
    这里写图片描述
  • 2.安装spring tools
    这里写图片描述
  • 3.右键点击application.properties文件,用spring properties editor编辑器打开
    这里写图片描述
  • 4.提示成功出现
    这里写图片描述

2.yml文件

YAML,全称Yet Another Markup Language,是“另一种标记语言”的外语缩写;但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。– 百度百科

个人觉得,yaml文件在SB配置文件中就是xml+json+Properties,它汲取了三者的最简单易用的地方结合到了一起,可读性比这3者更强,而且所需的字符更少。除了用作配置文件外,YAML也可以像XML和JSON用来序列化对象。

YAML在使用时,比properties多了一些格式上的要求,最基本的格式就是 key: value,注意,这个冒号和value之间要有一个空格!YAML也支持多层次的key,大致格式如下(如果是回车,冒号后面则不需要空格)

key: 

     key1: value1

     key2: value2

两种配置文件的作用是一样的,不过yml文件阅读更直观

配置文件详解

1、 自定义属性

当我们创建一个springboot项目的时候,系统默认会为我们在src/main/Java/resources目录下创建一个application.properties。个人习惯,我会将application.properties改为application.yml文件,两种文件格式都支持。

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

my:
  name: wude
  age: 18

如果你需要读取配置文件的值只需要加@Value(“${属性名}”):

@RestController
public class GetYmlValue{

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

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

2、将配置文件的属性赋给实体类

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

my:
 name: forezp
 age: 12
 number:  ${random.int}
 uuid : ${random.uuid}
 max: ${random.int(10)}
 value: ${random.value}
 greeting: hi,i'm  ${my.name}

其中配置文件中用到了${random} ,它可以用来生成各种不同类型的随机值。
怎么将这些属性赋于给一个javabean 呢,首先创建一个javabean :

@ConfigurationProperties(prefix = "my")
@Component
public class ConfigBean {

    private String name;
    private int age;
    private int number;
    private String uuid;
    private int max;
    private String value;
    private String greeting;

    //省略了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({ConfigBean.class})
public class GetYmlValue {

    @Autowired
    private ConfigBean configBean;

    @RequestMapping("/getConfigBean")
    public ConfigBean getConfigBean() {
        return configBean;
    }
}

启动工程,访问localhost:8080/getConfigBean,我们会发现配置文件信息读到了。

3、自定义配置文件

上面介绍的是我们都把配置文件写到application.yml中。有时我们不愿意把配置都写到application配置文件中,这时需要我们自定义配置文件,比如test.properties:

com.forezp.name=forezp
com.forezp.age=12

怎么将这个配置文件信息赋予给一个javabean呢?

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

在最新版本的springboot,需要加这三个注解。@Configuration
@PropertySource(value = “classpath:test.properties”)
@ConfigurationProperties(prefix = “com.forezp”);在1.4版本需要
PropertySource加上location。

@RestController
@EnableConfigurationProperties({ConfigBean.class,User.class})
public class LucyController {
    @Autowired
    ConfigBean configBean;

    @RequestMapping(value = "/lucy")
    public String miya(){
        return configBean.getGreeting()+" >>>>"+configBean.getName()+" >>>>"+ configBean.getUuid()+" >>>>"+configBean.getMax();
    }

    @Autowired
    User user;
    @RequestMapping(value = "/user")
    public String user(){
        return user.getName()+user.getAge();
    }

}

启动工程,打开localhost:8080/user;浏览器会显示:
forezp12

4、多个环境配置文件

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

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

怎么使用?只需要我们在application.yml中加:

spring:
  profiles:
    active: dev

其中application-dev.yml:

server:
  port: 8082

启动工程,发现程序的端口不再是8080,而是8082。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的、快速构建应用程式的框架。它简化了Spring框架的配置和开发过程,让开发者能够更快地搭建和部署应用程序。 Spring Boot提供了一种基于约定的方式来配置和启动应用程序。它采用了“约定优先于配置”的原则,可以自动配置应用程序的大部分依赖,减少了繁琐的配置工作。 Spring Boot具有以下特点: 1. 简化配置:Spring Boot通过自动配置减少了繁琐的XML配置和注解配置。它提供了一种基于注解的配置方式,减少了配置文件的编写,让开发者更专注于业务逻辑的实现。 2. 内置Web服务器:Spring Boot内置了多个常用的Web服务器,如Tomcat、Jetty、Undertow等,开发者可以选择其中一个作为项目的容器,无需额外配置。 3. 自动依赖管理:Spring Boot能够自动管理应用程序的依赖关系,简化了版本冲突和依赖包导入的问题。开发者只需在配置文件中声明依赖,Spring Boot会自动下载和管理依赖。 4. 健康监控:Spring Boot内置了健康监控功能,可以通过HTTP端点查看应用程序的健康状态,包括内存使用情况、线程池状态等,方便监控和故障排查。 5. 监听器和过滤器:Spring Boot支持自定义监听器和过滤器,开发者可以根据自己的需求来实现自己的监听器和过滤器,提供更灵活的扩展能力。 总之,Spring Boot是一个功能强大、简化开发的框架,可以帮助开发者快速搭建和部署应用程序。它以简化配置、自动依赖管理和内置Web服务器等特性受到广泛的欢迎和应用。在学习Java的过程中,掌握Spring Boot将对开发工作有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值