【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)

简介: 【小家Spring】Spring中读取配置的方式,@Value、@PropertySource、@ConfigurationProperties使用详解(下)

@PropertySource多环境配置以及表达式使用(spring.profiles.active)


方法一:可以这么配置

@PropertySource(“classpath:jdbc-${spring.profiles.active}.properties”)


程序员在开发时不需要关心生产环境数据库的地址、账号等信息,一次构建即可在不同环境中运行


@ConfigurationProperties


注意:上面其实都是Spring Framwork提供的功能。而@ConfigurationProperties是Spring Boot提供的。包括@EnableConfigurationProperties也是Spring Boot才有的。它在自动化配置中起到了非常关键的作用


ConfigurationPropertiesBindingPostProcessor会对标注@ConfigurationProperties注解的Bean进行属性值的配置。


有时候有这样子的情景,我们想把配置文件的信息,读取并自动封装成实体类,这样子,我们在代码里面使用就轻松方便多了,这时候,我们就可以使用@ConfigurationProperties,它可以把同类的配置信息自动封装成实体类


该注解在Spring Boot的自动化配置中得到了大量的使用


如SpringMVC的自动化配置:

@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {}
//加载方式
  @Configuration
  @Conditional(DefaultDispatcherServletCondition.class)
  @ConditionalOnClass(ServletRegistration.class)
  // 此处采用这个注解,可议把WebMvcProperties这个Bean加载到容器里面去~~~
  // WebMvcProperties里面使用了`@ConfigurationProperties(prefix = "spring.mvc")`
  @EnableConfigurationProperties(WebMvcProperties.class) //加载MVC的配置文件
  protected static class DispatcherServletConfiguration {}


似乎我们能看出来一些该注解的使用方式。


@ConfigurationProperties 注解支持两种方式


说明:这里说的两种,只是说的最常用的。其实只要能往容器注入Bean,都是一种方式,比如上面的@EnableConfigurationProperties方式也是ok的


关于@EnableConfigurationProperties的解释,在注解驱动的Spring相关博文里会有体现


1.加在类上,需要和@Component注解,结合使用.代码如下

com.example.demo.name=${aaa:hi}
com.example.demo.age=11
com.example.demo.address[0]=北京  # 注意数组 List的表示方式 Map/Obj的方式各位可以自行尝试
com.example.demo.address[1]=上海
com.example.demo.address[2]=广州
com.example.demo.phone.number=1111111


java代码:


@Component
@ConfigurationProperties(prefix = "com.example.demo")
public class People {
    private String name;
    private Integer age;
    private List<String> address;
    private Phone phone;
}   


  1. 通过@Bean的方式进行声明,这里我们加在启动类即可,代码如下


    @Bean
    @ConfigurationProperties(prefix = "com.example.demo")
    public People people() {
        return new People();
    }


其余属性见名之意,这里一笔带过:

ignoreInvalidFields、ignoreNestedProperties、ignoreUnknownFields


image.png


简单理解:


@ConfigurationProperties 是将application配置文件的某类名下所有的属性值,自动封装到实体类中。
@Value 是将application配置文件中,所需要的某个属性值,封装到java代码中以供使用。


应用场景不同:

如果只是某个业务中需要获取配置文件中的某项值或者设置具体值,可以使用@Value;

如果一个JavaBean中大量属性值要和配置文件进行映射,可以使用@ConfigurationProperties;

相关文章
|
19天前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
25天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
38 4
|
22天前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
32 0
|
15天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
7天前
|
Java Spring
[Spring]aop的配置与使用
本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
18 1
|
23天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
110 1
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
29天前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
149 2
|
3月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
2天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
9 2
 SpringBoot入门(7)- 配置热部署devtools工具
下一篇
无影云桌面