属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践

简介: 属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践


属性注入

当使用 Spring Boot 开发应用程序时,可以使用属性文件来配置应用程序的行为。Spring Boot 支持将属性值从属性文件注入到应用程序中的不同组件中。这使得我们可以在不修改代码的情况下更改应用程序的行为。

Spring Boot 支持多种类型的属性文件,包括 .properties.yml 文件。以下是使用这些文件进行属性注入的示例:

  1. 创建属性文件:首先,创建一个名为 application.properties(或 application.yml)的文件,放在 src/main/resources 目录下。该文件包含要配置的属性键值对。
  2. 定义属性:在属性文件中,可以定义应用程序需要的各种属性。例如,可以定义数据库连接的URL、用户名、密码等。
author:
  name: 薛伟
  age: 25
  isMan: true
  # 日期格式必须为 yyyy/MM/dd HH:mm:ss
  birthday: 1999/07/29 12:00:00
  # 数组或集合使用 , 分割
  friends: 张三,李四,王五,赵六
  # 此处为 JSON 字符串,双引号包裹
  school: "{'name':'宜春学院', 'location':'江西-宜春', 'major':'计算机科学与技术'}"

注入属性值:在 Spring Boot 应用程序的代码中,可以通过使用 @Value 注解将属性值注入到变量中。

@SpringBootTest
public class InjectionTest {
    /**
     * 注入基本数据类型
     */
    @Value("${author.name}")
    private String name;
    
    @Value("${author.age}")
    private Integer age;
    
    @Value("${author.isMan}")
    private Boolean isMan;
    /**
     * 注入日期
     */
    @Value("${author.birthday}")
    private Date birthday;
    /**
     * 注入数组或集合
     */
    @Value("${author.friends}")
    private List<String> friends;
    /**
     * 注入 JSON 转为 Map
     */
    @Value("#{${author.school}}")
    private Map<String,Object> school;
    
}

对象注入

使用 @ConfigurationProperties(prefix = "前缀"),比如上文在 application.yml 中配置的信息,那么 author 就是前缀。注意使用对象注册的时候就不可以在注入 JSON 了。

@Data
@Component
@ConfigurationProperties(prefix = "author")
public class Author {
    private String name;
    private Integer age;
    private Date birthday;
    private Boolean isMan;
    private List<String> friends;
}

自定义配置文件并使用对象注入

在 Spring Boot 应用程序中,可以使用自定义配置文件来覆盖默认的 application.properties 或 application.yml 文件。这意味着您可以在不修改默认配置文件的情况下,为您的应用程序提供自己的自定义配置。

resources 目录下创建 custom.properties 配置文件,并填写以下配置:

project.name=测试DEMO
project.jdk=1.8

加载自定义配置文件:在 Spring Boot 应用程序中,可以通过使用 PropertySource 注解加载自定义配置文件。

@Data
@Component
@PropertySource("classpath:/custom.properties")
public class MyProject {
    
    @Value("${project.name}")
    private String name;
    @Value("${project.jdk}")
    private String jdk;
}

然后配合 @ConfigurationProperties(prefix = "前缀") 即可完成对象注入。

@Data
@Component
@ConfigurationProperties(prefix = "project")
@PropertySource("classpath:/custom.properties")
public class Project {
    private String name;
    private String jdk;
}



相关文章
|
1月前
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
129 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
8天前
|
XML 前端开发 Java
一文搞懂 Spring Boot 自动配置原理
Spring Boot 自动配置原理揭秘:通过 `@EnableAutoConfiguration` 加载 `META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 中的配置类,结合 `@Conditional` 按条件注入 Bean,实现“开箱即用”。核心在于约定大于配置,简化开发。
185 0
|
1月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
1月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
12天前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
1月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
200 1
日志收集和Spring 微服务监控的最佳实践
|
1月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
367 4
|
1月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
127 0
探索Spring Boot的@Conditional注解的上下文配置
|
XML Java 数据格式
Spring【依赖注入】就是这么简单(二)
在Spring的第二篇中主要讲解了Spring Core模块的使用IOC容器创建对象的问题,Spring Core模块主要是解决对象的创建和对象之间的依赖关系,因此本博文主要讲解如何使用IOC容器来解决对象之间的依赖关系!
209 0
Spring【依赖注入】就是这么简单(二)
|
Java 测试技术 容器
Spring【依赖注入】就是这么简单
前言 在Spring的第二篇中主要讲解了Spring Core模块的使用IOC容器创建对象的问题,Spring Core模块主要是解决对象的创建和对象之间的依赖关系,因此本博文主要讲解如何使用IOC容器来解决对象之间的依赖关系! 回顾以前对象依赖 我们来看一下我们以前关于对象依赖,是怎么的历程 直接new对象 在最开始,我们是直接new对象给serice的userDao属性赋值.
1254 0