2 springboot全局配置

目录

2.1 SpringBoot默认加载配置

2.2 yaml⽂件 

YAML语法

Yaml数据结构 

2.3 yaml读取数据 

读取单个配置⽂件数据

 读取全部配置⽂件数据

读取对象数据

 2.4 application.properties读取数据

2.4.1 属性注⼊常⽤注解

2.4.2 @Value属性值注⼊ 

1.引⼊数据源连接依赖

2.application.properties添加信息

3.配置数据源

2.4.3 @ConfigurationProperties批量注⼊


2.1 SpringBoot默认加载配置

SpringBoot全局配置⽂件可以对⼀些默认配置进⾏修改。SpringBoot除了⽀持properties格式的配置⽂件,还⽀持另外两种格式的配置⽂件。分别如下:

  • application.properties
  • application.yml
  • application.yaml

这两个配置⽂件使我们SpringBoot启动的时候会默认加载的配置⽂件。 

配置⽂件放在src/main/resources⽬录或者类路径/config下,这个配置⽂件的路径是有优先级的,⾄于优先级后⾯再说。

  • application.properties(properties格式)

 server.port=80

  •  application.yml(yml格式 推荐)

server:
        port: 81

  • application.yaml(yaml格式) 

 server:
        port: 82

yml格式和yaml格式除了⽂件名后缀不⼀样,格式完全⼀样,是这样的,yml和yaml⽂件格式就是⼀模⼀样的,只是⽂件后缀不同,所以可以合并成⼀种格式来看 。 port: 82值与冒号之间有一个空格

注意:

1. 配置⽂件间的加载优先级 properties(最⾼)> yml > yaml(最低)
2. 不同配置⽂件中相同配置按照加载优先级相互覆盖,不同配置⽂件中不同配置全部保留

2.2 yaml⽂件 

YAML全称 YAML Ain`t Markup Language,是⼀种可读性⾮常⾼的数据格式。YAML相对于XML等标记语⾔来说,不再以标记为语⾔重点,⽽是紧紧围绕数据来组织结构化格式。


后缀可以是 .yaml 或者 .yml , 我们通常使⽤的是.yml

 xml格式

<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driver}"></property>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

yaml格式:

spring:
        # 数据源配置
        datasource:
                ds1: #数据源1
                        driver-class-name: com.mysql.jdbc.Driver
                        url: jdbc:mysql://ip:3306/db1 #数据源地址
                        username: root # ⽤户名
                        password: root # 密码
                ds2: # 数据源2
                        driver-class-name: com.mysql.jdbc.Driver
                        url: jdbc:mysql://ip:3307/db2#数据源地址
                        username: root # ⽤户名
                        password: root # 密码

YAML语法

(1)通常,约定YAML⽂件的后缀为yaml或yml
(2)YAML中,数据的⼤⼩写敏感
(3)YAML使⽤空格来缩进,缩进空格数不做严格要求,同⼀级缩进的数据左对⻬即可。
(4)YAML⽀持字⾯量、对象、数组三种数据类型
(5)YAML格式中使⽤ # 表示注释

Yaml数据结构 

Yaml⽂件⽀持三种数据结构:
1、字⾯量:普通的值(数字,字符串,布尔)
        key: value:字⾯直接来写;
        字符串默认不⽤加上单引号或者双引号;

        "":双引号;会转义字符串⾥⾯的特殊字符;特殊字符会作为本身想表示的意思
                name: "李⻘ \n 亚索":输出:李⻘ 亚索
        '':单引号;不会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据
                name: ‘李⻘ \n 亚索’:输出:李⻘ \n 亚索

2、对象:key-value键值对的集合
        key: value:在下⼀⾏来写对象的属性和值的关系,需要进⾏缩进
        对象还是key: value的⽅式

        friends:
                lastName: zhangsan
                age: 20

        ⾏内写法 

        friends: {lastName: zhangsan,age: 18}

3、数组:⼀组按次序排列的值(List、Set): 

        使⽤- 值表示数组中的⼀个元素

        pets:
                - cat
                - dog
                - pig

        数组⾏内写法: 

        pets: [cat,dog,pig]

2.3 yaml读取数据 

读取单个配置⽂件数据

yaml中保存的单个数据,可以使⽤Spring中的注解直接读取,使⽤@Value可以读取单个数据,

属性名引⽤⽅式:@Value("${⼀级属性名.⼆级属性名……}")

 读取全部配置⽂件数据

SpringBoot提供了⼀个对象,能够把所有的数据都封装到这⼀个对象中,这个对象叫做Environment,使⽤⾃动装配注解可以将所有的yaml数据封装到这个对象中

 数据封装到了Environment对象中,获取属性时,通过Environment的接⼝操作进⾏,具体⽅法时getProperties(String),参数填写属性名即可

总结
        1. 使⽤Environment对象封装全部配置信息
        2. 使⽤@Autowired⾃动装配数据到Environment对象中

读取对象数据

         SpringBoot也提供了可以将⼀组yaml对象数据封装⼀个Java对象的操作
        ⾸先定义⼀个对象,并将该对象纳⼊Spring管控的范围,也就是定义成⼀个bean,然后使⽤注解@ConfigurationProperties指定该对象加载哪⼀组yaml中配置的信息。
        这个@ConfigurationProperties必须告诉他加载的数据前缀是什么,这样当前前缀下的所有属性就封装到这个对象中。记得数据属性名要与对象的变量名⼀⼀对应啊,不然没法封装。其实以后如果你要定义⼀组数据⾃⼰使⽤,就可以先写⼀个对象,然后定义好属性,下⾯到配置中根据这个格式书写即可。

 2.4 application.properties读取数据

读取配置⽂件数据的读取⽅式是⼀样的,不管我们⽤的是yaml还是application.properties, UserDataSource实体类属性,还必须在程序中注⼊这些配置属性⽅可⽣效。

2.4.1 属性注⼊常⽤注解

@Configuration:声明⼀个类作为配置类
@Bean:声明在⽅法上,将⽅法的返回值加⼊Bean容器
@Value:属性注⼊
@ConfigurationProperties(prefix = "jdbc"):批量属性注⼊
@PropertySource("classpath:/jdbc.properties")指定外部属性⽂件,在类上添加

2.4.2 @Value属性值注⼊ 

1.引⼊数据源连接依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.11</version>
</dependency>

2.application.properties添加信息

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/afx?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root 

3.配置数据源

 创建JdbcConfiguration类: 使⽤spring中的value注解对每个属性进⾏注⼊,⽤bean注解将返回值添加到容器中

@Configuration
public class JdbcConfiguration {
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;
    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

2.4.3 @ConfigurationProperties批量注⼊

新建JdbcProperties,⽤来进⾏属性注⼊:

@Component
@ConfigurationProperties(prefix = "jdbc") //这⾥需要定义出在application⽂件中定义属性值得前缀信息
public class JdbcProperties {
    private String url;
    private String driverClassName;
    private String username;
    private String password;
// 注:要⽣成属性的set⽅法
}

注:添加@ConfigurationProperties注解后有警告:springboot 配置注释处理器未配置(编写配置⽂件此时⽆提示)


添加spring-boot-configuration-processor后出现提示,加完依赖后通过Ctrl+F9来使之⽣效

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值