SpringBoot学习笔记2配置文件种类及值的获取profile多环境开发

SpringBoot学习笔记—Day02

spring boot 的配置文件
spring boot使用一个全局的配置文件,默认支持俩种类型的配置文件,application.properties和application.yml,spring boot中的这个全局的配置文件的名字是固定的,
配置文件的作用: 修改spring boot配置文件的默认值
yml又叫YAML,
k:(空格)v 表示一组键值对,空格必须有
空格的缩进来控制层级关系,左对齐的一列数据都是同一层级的,另外属性和值也是大小写敏感

server:
	port:8081
	path:/hello

YAML的基本语法

演示代码
先导入配置文件处理器,这样绑定配置文件会有提示

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

编写配置文件的映射java类

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String username;
    private Integer password;
    private Boolean boss;
    private Date birth;

    private Map<String ,Object> maps;
    private List<Object> lists;
    private Dog dog;

    @Override
    public String toString() {
        return "Person{" +
                "username='" + username + '\'' +
                ", password=" + password +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getPassword() {
        return password;
    }

    public void setPassword(Integer password) {
        this.password = password;
    }

    public Boolean getBoss() {
        return boss;
    }

    public void setBoss(Boolean boss) {
        this.boss = boss;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }
}

yml的写法

person:
  username: 啦啦啦
  password: 456789
  boss: true
  birth: 2020/12/11
  maps: {k1: v1,k2: v2}
  lists:
    - abc
    - 啦啦啦
  dog:
    name: 汪汪
    num: 6

其中@ConfigurationProperties注解作用: 该注解下的java类映射配置文件
属性prefix是标记配置文件中的元数据

另外@ConfigurationProperties需要在spring容器的作用下才会起作用,所以需要加@Component注解
@Value注解和@ConfigurationProperties注解的区别
@Value注解同样也可以获取properties或者yaml文件中的信息,以下是@Value注解和@ConfigurationProperties注解的区别

@ConfigurationProperties@Value
批量注入配置文件的属性单个指定
支持松散绑定不支持
不支持SpEL支持SpEL
支持jsr303数据校验不支持
支持复杂类型封装(map,list等)不支持

无论是properties还是yaml,这俩个注解都可以获取到值
如果说我们在业务逻辑中获取一下配置文件中的某个值,可以使用@Value注解
如果我们编写了一个javaBean来和配置文件进行映射,那么可以使用@ConfigurationProperties注解

@PropertySource(value = “classpath:person.properties”)
@PropertiesSource注解可以加载指定的配置文件,但是需要在@ConfigurationProperties注解下使用,属性value内需要加classpath:
@PropertySource注解使用示例

@PropertySource(value = "classpath:person.properties")
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

@ImportResource注解
作用: 导入spring配置文件,让配置文件生效
spring boot里面没有spring的配置文件,所以我们自己编写的配置文件不会生效
将@ImportResource注解标注在一个配置类上,可以让我们编写的spring配置文件生效
使用示例:

@ImportResource(locations = "classpath:bean.xml")
@SpringBootApplication
public class SpringBootStudyQuickApplication {

但是spring boot不推荐这种方式,spring boot 推荐使用全注解的方式
示例演示:注解方式的配置类

/**
 * @Configuration注解表明这是一个配置类
 *
 */
@Configuration
public class MyAppConfig {
    /**
     * 将方法的返回值添加到容器中,容器中这个组件的id就是方法名(也可以用name属性进行指定)
     * @return
     */
    @Bean
    public HelloService helloService(){
        System.out.println("helloService方法执行了...");
        return new HelloService();
    }
}

profile多环境开发
1、多profile文件形式:
– 格式:application-{profile}.properties/yml: • application-dev.properties、application-prod.properties
2、多profile文档块模式(yaml):
3、激活方式:
– 命令行(Program argumants) --spring.profiles.active=dev
– 配置文件 spring.profiles.active=dev
– jvm参数(VM options) –Dspring.profiles.active=dev
指定属于哪个环境演示:

spring:
  profiles: dev

配置文件指定示例演示

spring:
  profiles:
    active: dev

开发环境(dev):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。

测试环境(test):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。

生产环境(prod):是值正式提供对外服务的,一般会关掉错误报告,打开错误日志。

三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值