springboot如何读取自定义properties并注入到bean中

在SpringBoot中,可以使用@ConfigurationProperties注解来读取自定义properties,然后将其注入到bean中。

具体步骤如下:

  1. 定义自定义properties文件,在application.properties中定义的属性值,是可以被@ConfigurationProperties读取到的。可以在application.properties文件中添加自定义属性,如:
my.config.name=hello
my.config.age=18
  1. 创建一个@ConfigurationProperties注解的类,用于接收自定义属性值。
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
    private String name;
    private int age;
    // getter、setter方法省略
}

在上面的代码中,@ConfigurationProperties(prefix = "my.config")指定了自定义属性的前缀为“my.config”,这个前缀必须和application.properties中前缀相同。

  1. 创建一个@Configuration注解的配置类,并将MyConfig类注入到容器中。
@Configuration
public class MyConfigConfig {
    @Bean
    @ConfigurationProperties(prefix = "my.config")
    public MyConfig myConfig() {
        return new MyConfig();
    }
}

上面的配置类利用@Bean注解将MyConfig注入到Spring容器中,并且使用@ConfigurationProperties注解指定读取属性文件的前缀为“my.config”。这样就会自动将属性文件的值注入到MyConfig类中。

  1. 在其他类中使用MyConfig类
@Component
public class MyService {
    @Autowired
    private MyConfig myConfig;

    // 访问myConfig的属性值
    public void printConfig() {
        System.out.println("name:" + myConfig.getName() + ",age:" + myConfig.getAge());
    }
}

上面的代码中,使用@Autowired注解将MyConfig类注入到MyService中,然后就可以通过myConfig访问到自定义属性的值了。

示例一:读取redis相关的属性

spring.redis.host=127.0.0.1
spring.redis.port=6379
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Component
public class RedisConfig {
    private String host;
    private int port;
    // getter、setter省略
}

示例二:读取自定义的Kafka属性

kafka.bootstrap.servers=127.0.0.1:9092
kafka.topic=myTopic
@Configuration
@ConfigurationProperties(prefix = "kafka")
@Component
public class KafkaConfig {
    private String bootstrapServers;
    private String topic;
    // getter、setter省略
}

需要注意的是,为了读取自定义的properties文件内容,需要在application.properties中指定扫描自定义properties文件的路径,如:

spring.config.location=classpath:/custom.properties

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何读取自定义properties并注入到bean中 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • C语言基础知识点解析(extern,static,typedef,const)

    关于C语言基础知识点解析的完整攻略,我将分为四个部分来详细讲解extern、static、typedef、const的定义、用法和示例。 1. extern详解 extern是外部变量或函数的声明关键字。若在一个文件中定义了一个全局变量或函数,而在另一个文件中需要使用该变量或函数,则必须在使用之前用extern进行声明,表示该变量或函数是外部可见的。 ext…

    other 2023年6月26日
    00
  • ConcurrentHashMap 存储结构源码解析

    下面我会详细讲解“ConcurrentHashMap 存储结构源码解析”的完整攻略。 ConcurrentHashMap 存储结构源码解析 一、ConcurrentHashMap 的概述 ConcurrentHashMap 是 JDK 中一个并发访问的哈希表,它提供了线程安全的哈希表访问功能,适用于高并发场景。ConcurrentHashMap 基于分段锁(…

    other 2023年6月27日
    00
  • rabbitmq手动确认

    RabbitMQ手动确认 RabbitMQ是一个流行的消息队列,在分布式系统中常常被用作异步通信的工具。在消息传递的过程中,我们常常需要保证消息的确认性,否则消息可能会因为异常情况被多次发送或者丢失。本文将介绍如何通过手动确认机制来保证消息的可靠性。 概述 现代的消息队列系统通常支持两种消息确认的方式:自动确认和手动确认。 自动确认是指在消息被成功传输到消费…

    其他 2023年3月28日
    00
  • C语言多文件编写详解

    C语言多文件编写详解 C语言是一种面向过程的编程语言,其开发过程是由多个代码文件协同完成的。在实际工程中,我们通常把不同功能的代码分别存入不同的文件中进行编写及调试。这种编程方式称之为多文件编写。 多文件编写的优点 可以让程序更加清晰明了,不同代码的分离会让逻辑上整个程序更加合理。 当一个函数被不同文件使用时,可以减少代码冗余 可以让程序更容易被维护管理和调…

    other 2023年6月27日
    00
  • 使用R语言批量修改文件名的方法

    实现使用R语言批量修改文件名的方法主要涉及以下步骤: 1. 确认需要修改的文件路径 首先需要确认需要修改的文件所在目录或路径,可以使用list.files()函数查看该目录下的所有文件。例如: file.dir <- "/Users/username/Documents" file.list <- list.files(fil…

    other 2023年6月26日
    00
  • Docker配置容器位置与小技巧总结

    下面是“Docker配置容器位置与小技巧总结”的完整攻略: 1. 配置容器位置 在Docker中,我们可以使用–volume参数来将本地文件夹挂载到Docker容器中,从而使得容器中的文件可以持久化保存在本地文件夹中。例如,我们可以使用以下命令将本地文件夹/home/user/data挂载到容器的/data文件夹中: docker run –volume…

    other 2023年6月27日
    00
  • vue开发树形结构组件(组件递归)

    下面是“vue开发树形结构组件(组件递归)”的完整攻略: 什么是树形结构? 树形结构是由树根、树干、树枝和叶子节点组成的数据结构。它是一种非线性数据结构,具有天然的层次关系,常见的应用场景有网站菜单、文件目录、组织结构等。 树形结构组件递归 在Vue中,组件递归是一种处理树形结构的经典方式。组件递归通过在组件内部使用自身来实现对嵌套数据的处理,这种方式可以用…

    other 2023年6月27日
    00
  • 利用ace的ACE_Task等类实现线程池的方法详解

    首先,需要明确线程池的概念。线程池是一种多线程处理方式,它的基本思想是在系统启动时预先创建一定数量的线程,放入线程池中,待有任务到来时就可以避免频繁地创建和销毁线程,提高系统的稳定性和效率。 接下来我将具体介绍如何利用ACE的ACE_Task等类来实现线程池。 利用ACE_Task等类实现线程池的基本原理 1.定义一个继承自ACE_Task的线程池类,并设置…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部