栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot配置文件简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot配置文件简介

Spring Boot配置文件简介(一)

文章目录
    • Spring Boot配置文件简介(一)
      • 配置类
        • 1.使用@ConfigurationProperties注解可批量获取配置文件中的值
        • 2.使用@Value可直接单个获取配置文件中的值
        • 3. @Value和@ConfigurationProperties的区别
        • 4. JSR303数据校验的基本使用
        • 5. 使用@PropertySource加载指定的配置文件
        • 6.使用@ImportSource导入spring的配置文件
        • 7. 配置文件占位符
        • 8. Profile
          • 1.多profile文件
          • 2.yml的文档块模式
          • 3.激活指定profile
        • 9.配置文件加载位置
        • 10. 外部配置加载顺序
        • 11. 自动配置原理

配置类
# properties配置类中添加person的属性值

# 用于设置person类的值
person.name=张三
person.birth=2022-02-10
person.gender=女
1.使用@ConfigurationProperties注解可批量获取配置文件中的值
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;
    private int age;
    private String gender;
    private Boolean boss;
    private Date birth;
    private Map maps;
    private List list;

 

使用@ConfigurationProperties时需要添加依赖


        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
2.使用@Value可直接单个获取配置文件中的值
@Component
//@ConfigurationProperties(prefix = "person")
public class Person {

    @Value("${person.name}")
    private String name;
    @Value("#{2*3}")
    private int age;
    @Value("${person.gender}")
    private String gender;
}
3. @Value和@ConfigurationProperties的区别
@ConfigurationProperties@Value
功能批量注入配置文件中的属性单个获取
松散绑定支持不支持
SqEL不支持支持
JSR303数据校验支持不支持
复杂类型对接支持不支持

注:松散绑定:lastName = Last-name,即大写可以用 “-小写” 来表示

当某个业务逻辑中需要获取某个配置文件中的数值时,使用@Value
当专门写了一个JavaBean和配置文件映射时,使用@ConfigurationProperties

4. JSR303数据校验的基本使用
//通过使用注解的方式给予对象属性限制,例如不为空、手机号、邮箱、长度等

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {

    @Value("${张三}")
    private String name;
    @Value("#{2*3}")
    private int age;
	
    //email必须是邮箱格式才行
    @Email
    private String email;

	 @NotNull              //不能为空
    @IsMobile             //@IsMobile是自定义校验规则,必须符合电话号码规范。见IsMobile类和IsMobileValidator类
    private String mobile;

    @NotNull              //密码不能为空
    @Length(max=32)       //长度不能超过32
    private String password;
}
5. 使用@PropertySource加载指定的配置文件
//指定配置文件路径为:类路径下的person.properties文件
@PropertySource(value = {"classpath:person.properties"})
@Component
//@ConfigurationProperties(prefix = "person")
@Data
public class Person {


    //@Value("${person.name}")
    private String name;
    @Value("#{2*3}")
    private int age;

    //email必须是邮箱格式才行
    //@Email
    private String gender;
    private Boolean boss;
    private Date birth;
    private Map maps;
    private List list;
}
 
6.使用@ImportSource导入spring的配置文件 

spring中加载配置文件的方法

#在主配置类中添加配置文件的路径,以让其生效,一般为xml格式文件
@ImportResource(value = {"classpath:beans.xml"})

@SpringBootApplication
public class PropertiesApplication {

    public static void main(String[] args) {
        SpringApplication.run(PropertiesApplication.class, args);

    }

}

beans.xml文件内容如下




    

springboot中推荐给容器中添加组件的方式:推荐全注解的方式
使用@Bean注解自动获取配置类中的信息。


@Configuration
public class MyAppConfig {

    //将方法中的返回值添加到容器中,容器中的默认ID为方法名
    @Bean
    public HelloService helloService(){
        System.out.println("@Bean注解生效,容器中添加组件成功!!!");
        return new HelloService();
    }
}
7. 配置文件占位符
# 用于设置person类的值
person.name=张三
person.birth=2022/02/10
gender-0=女
gender-1=男

#直接获取配置文件中其他属性值 $ ${person.name}
person.gender=${person.gender-0}

#也可使用${random.value}来添加随机值
person.age=${random.int}

8. Profile 1.多profile文件

主配置文件编写时,文件名命名格式为 application-{profileName}.properties
但默认使用appllication.properties的配置

2.yml的文档块模式
server:
  port: 8081
spring:
  profiles:
    active: dev
---
server:
  port: 8082

spring:
  profiles: dev

---
server:
  port: 8084

spring:
  profiles: prod

3.激活指定profile
  • 在配置文件中指定 spring.prodile.active={profileName} ,例如:=dev
  • 命令行:
    将项目打包后,执行命令 java -jar spring-boot-project-name.jar --spring.profiles.active=dev
  • 虚拟机参数:
    -Dspring.profiles.active=dev
9.配置文件加载位置

spring boot启动时会扫描以下位置的application.properties或者application.yml文件作为springboot的默认配置文件。

加载顺序和优先级从高到低为:

 -file:./config/

-file:./

-classpath:./config/

-classpath:./
  • SpringBoot会从这四个位置全部加载主配置文件,支持“互补配置”:高优先级的配置会覆盖低优先级的配置,但同时会加载全部的配置。

  • 还可以使用spring.config.location 来改变默认的配置文件位置,但应使用命令行的形式来实现。

10. 外部配置加载顺序

  • 使用命令行参数,例如: java -jar projectName.jar --server.port=8082 --server.context-path=/springboot
  • 优先加载配置文件中带profile的
  • 加载和优先级顺序都从jar包外到jar包内
  • 具体参考官方文档
11. 自动配置原理

自动配置类需要在一定条件下才能生效,
可以通过启用 debug=true 属性,在控制台可以打印出启用、未启用的自动配置类。

注:本文是一课程总结,如有侵权,请联系删除。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号