@ConfigurationProperties注解的理解和使用

简介: @ConfigurationProperties注解的理解和使用

1 @ConfigurationProperties说明

在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值

2 使用@ConfigurationProperties

ConfigurationPropertiesTest.java

/**
 * @desc: @ConfigurationProperties
 * @author: YanMingXin
 * @create: 2021/7/27-17:36
 **/
@ConfigurationProperties(prefix = "student")
@Component
public class ConfigurationPropertiesTest {
    private String name;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}
复制代码

SpringUtil.java

/**
 * @desc: SpringUtil
 * @author: YanMingXin
 * @create: 2021/7/27-17:55
 **/
@Component
public class SpringUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
    }
    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    /**
     * 通过name获取 Bean
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
    /**
     * 通过class获取Bean
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}
复制代码

application.properties

student.name=zs
student.age=23
复制代码

测试:

@Test
void contextLoads() {
    ConfigurationPropertiesTest bean = (ConfigurationPropertiesTest) SpringUtil.getBean("configurationPropertiesTest");
    System.out.println(bean.getAge());
}
复制代码

输出:

23


相关文章
|
Rust JavaScript Go
2024年十大值得关注的编程语言
探索2024年最有影响力的编程语言:Python的多功能无与伦比,JavaScript在Web领域的统治地位,Rust的高效性,等等。
|
缓存 NoSQL 安全
Linux设备驱动程序(四)——调试技术3
Linux设备驱动程序(四)——调试技术3
429 0
|
传感器 人工智能 监控
智能水质监测:水源保护与污染控制
【10月更文挑战第24天】智能水质监测技术结合了先进的信息技术、通信技术和传感技术,实现对水质的实时监测、分析与预警,旨在提高水资源利用效率、保障公共健康、维护生态平衡、追踪污染源并建立预警机制。通过传感器、通信技术、数据处理与智能控制技术的综合应用,该技术为水资源保护提供了科学依据和有效手段,促进了水资源的可持续发展。未来,随着技术的不断创新,智能水质监测将在水资源管理中发挥更大作用。
|
9月前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
191 0
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
290 7
|
存储 数据采集 数据库
用 Python 爬取淘宝商品价格信息时需要注意什么?
使用 Python 爬取淘宝商品价格信息时,需注意法律和道德规范,遵守法律法规和平台规定,避免非法用途。技术上,可选择 Selenium 和 Requests 库,处理反爬措施如 IP 限制、验证码识别和请求频率控制。解析页面数据时,确定数据位置并清洗格式。数据存储可选择 CSV、Excel、JSON 或数据库,定期更新并去重。还需进行错误处理和日志记录,确保爬虫稳定运行。
|
存储 安全 Android开发
深入探索安卓与iOS的安全性对比
在这篇文章中,我们将探讨安卓和iOS两大操作系统在安全性方面的不同之处。通过分析它们的安全架构、更新机制以及用户数据保护策略,我们可以更好地理解它们各自的优势和不足。无论是对于普通用户还是专业开发者,了解这些信息都是非常有益的。
|
缓存 UED
什么是Expires字段
【8月更文挑战第18天】什么是Expires字段
730 1
|
编译器 API 数据库
技术好文共享:(xxxx)十一:SQLite3的db数据库解密(三)数据库在线备份
技术好文共享:(xxxx)十一:SQLite3的db数据库解密(三)数据库在线备份
527 0
|
Java 数据库连接 mybatis
Mybatis之分页插件
【1月更文挑战第5天】 一、分页插件使用步骤 1、添加依赖 2、配置分页插件 二、分页插件的使用 1、开启分页功能 2、分页相关数据 方法一:直接输出 方法二使用PageInfo 常用数据:
259 1