使用Spring静态注入实现读取配置工具类新方式

目录
  • Spring静态注入实现读取配置工具类
    • 核心代码
    • 拓展
  • Spring两种方式注入到静态工具类里
    • 方式1
    • 方式2:zs

Spring静态注入实现读取配置工具类

Spring静态注入的核心首先是需要是一个Bean,才可以从Spring上下文中注入Bean,下例中environment是需要Autowired注入的Bean,之所以选择Environment是因为它有Spring已经加载好的属性配置,直接拿来用比从文件中读取更优雅,从文件中读取需要面临jar包外部配置问题,暂时未找到较好解决办法。

@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。此处把PropertiesUtils被Spring实例化的Bean赋值给静态变量tool,后续可以通过tool使用实例化好的PropertiesUtils的Bean。

getProperty作为根据key获取指的静态方法,实现获取配置属性。

核心代码

@Component
public class PropertiesUtils {
    private static PropertiesUtils tool;
    @Autowired
    private Environment environment;
    public static String getProperty(String property) {
        return tool.environment.getProperty(property);
    }
    @PostConstruct
    public void init() {
        tool = this;
        tool.environment = this.environment;
    }
}

实现Starter关键步骤——配置类,自动配置PropertiesUtils的Bean

public class AutoConfig {
    @Bean
    private PropertiesUtils propertiesUtils() {
        return new PropertiesUtils();
    }
}

实现Starter关键步骤——在resources的创建META-INF文件夹,创建spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.AutoConfig

拓展

Environment :

  • Spring 为运行环境提供的高度抽象接口,项目运行中的所有相关配置都基于此接口,用来表示整个应用运行时的环境。
  • 该接口继承自PropertyResolver,而PropertyResolver规范了解析底层任意property资源,也就意味着application.properties是由PropertyResolver管理。
  • PropertyResolver提供了方法getProperty(String key),该方法通过传入properties文件中定义的key,返回与给定键关联的属性值。

Spring两种方式注入到静态工具类里

需要注意的是下边的两个方法都需要工具类创建实例的时候才会注入。所以不建议在工具类注入实例。因为一般工具类都是直接通过类来使用的。

直接上代码

方式1

//可以换成@Configuration,与@Inject配合使用
@Componentpublic 
class XXUtils { 
        //可以换成@Inject/ @Autowired
       @Resource
  private XXXProperties xxxPropertiesAutowired;  
  private static XXXProperties xxxProperties;  
       @PostConstruct 
       public void init() {
              this.xxxPropertiesAutowired = xxxProperties;
       }
}

方式2:zs

@Component
public class UrlUtil {
     private static RRJConfig rrjConfig;
    @Autowired
    public void setRRJConfig(RRJConfig rRJConfig) {
    UrlUtil.rrjConfig = rRJConfig;
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring boot工具类静态属性注入及多环境配置详解

    由于需要访问MongoDB,但是本地开发环境不能直接连接MongoDB,需要通过SecureCRT使用127.0.0.2本地IP代理.但是程序部署到线上生产环境后,是可以直接访问MongoDB的,因此开发好程序后,总是要修改一下MongoDB服务器的IP才能提交代码,这样很是不方便. private static final String PUBCHAT_HOST = "127.0.0.2"; // private static final String PUBCHAT_HOST =

  • Springboot 读取自定义pro文件注入static静态变量方式

    Springboot 读取pro文件注入static静态变量 mailConfig.properties #服务器 mail.host=smtp.qq.com #端口号 mail.port=587 #邮箱账号 mail.userName=hzy_daybreak_lc@foxmail.com #邮箱授权码 mail.passWord=vxbkycyjkceocbdc #时间延迟 mail.timeout=25000 #发送人 mail.emailForm=hzy_daybreak_lc@foxm

  • springboot如何读取配置文件到静态工具类

    目录 springboot读取配置文件到静态工具类 我们可以用Environment 来解决 将配置文件的值加载到工具类的静态变量中(多环境运行加载) 首先创建一个SpringBoot项目 创建配置文件 创建实体类 springboot读取配置文件到静态工具类 通常我们读取配置文件可以用@Value注解和@Configuration,@ConfigurationProperties(prefix = "xxx")等注解,但是这种方式是无法把配置读取到静态变量的,如果我们想在项目初始化时

  • 使用Spring静态注入实现读取配置工具类新方式

    目录 Spring静态注入实现读取配置工具类 核心代码 拓展 Spring两种方式注入到静态工具类里 方式1 方式2:zs Spring静态注入实现读取配置工具类 Spring静态注入的核心首先是需要是一个Bean,才可以从Spring上下文中注入Bean,下例中environment是需要Autowired注入的Bean,之所以选择Environment是因为它有Spring已经加载好的属性配置,直接拿来用比从文件中读取更优雅,从文件中读取需要面临jar包外部配置问题,暂时未找到较好解决办法.

  • Spring Boot 如何正确读取配置文件属性

    目录 前言 @Value 示例代码 @ConfigurationProperties 示例代码 @EnableConfigurationProperties @ConfigurationPropertiesScan @PropertySource 示例代码 总结 前言 项目中经常会经常读取配置文件中的属性的值,Spring Boot提供了很多注解读取配置文件属性,那么如何正确使用呢? @Value @Value用来读取application.yml配置文件中属性的值. 示例代码 applicat

  • SpringBoot结合Redis配置工具类实现动态切换库

    我使用的版本是SpringBoot 2.6.4 可以实现注入不同的库连接或是动态切换库 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> </parent> <dependency> <

  • SpringBoot集成Kafka 配置工具类的详细代码

    目录 1.单播模式,只有一个消费者组 2.广播模式,多个消费者组 spring-kafka 是基于 java版的 kafka client与spring的集成,提供了 KafkaTemplate,封装了各种方法,方便操作,它封装了apache的kafka-client,不需要再导入client依赖 <!-- kafka --> <dependency> <groupId>org.springframework.kafka</groupId> <arti

  • JAVA文件读取常用工具类(8种)

    目录 一.读取文件成字节 二.将字节写入文件 三.按行读取文件成list 四.输出list到文件 五.从标准输入中读入 六.读取文件成字符串 七.输出字符串到文件 八.读取文件成数据矩阵 总结 JAVA操作文件在经常会使用到,本文汇总了部分JAVA操作文件的读取常用工具类,希望可以帮到大家.直接上代码. 一.读取文件成字节 将文件内容转为字节,需要使用到FileInputStream文件字节输入流,将文件输入到文件字节输入流中,使用FileInputStream的available()方法获取与

  • 使用Spring从YAML文件读取内容映射为Map方式

    目录 从YAML文件读取内容映射为Map Spring框架中的YAML文件 从YAML文件内容注入Map @ConfigurationProperties与@Value 配置文件yml中的map形式 yml中的格式 创建一个类 引用 打印 从YAML文件读取内容映射为Map 如何在Spring Boot中从YAML文件注入到Map. 首先,将对Spring框架中的YAML文件有一些了解. 然后,通过一个实际示例展示如何将YAML属性绑定到Map. Spring框架中的YAML文件 使用YAML文

  • springboot实现在工具类(util)中调用注入service层方法

    一.新建BeanUtil类 import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.DisposableBean; import org.springframework.context.ApplicationContext; import org.springframework.context.Applic

  • Spring依赖注入的三种方式实例详解

    Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di; public interface Logic { pub

  • Spring Boot Web应用程序配置详解

    在这篇短文中,我们将介绍Spring Boot Web应用程序配置的一些有趣方面. 我们将介绍一些Web应用程序最常用的配置. 1. 介绍 Spring Boot带有智能构建功能,可以轻松创建Web或独立应用程序.Spring Boot可以为我们做很多事情,甚至不需要我们为Web应用程序编写一行代码.本文中,我们只介绍其中几个配置. 2. HTTP端口 web应用最常见的一个配置是HTTP端口号,我们可以用下列几种方式轻松地为我们的web应用配置HTTP端口号: 使用application.pr

  • Java中RedisUtils工具类的使用

    目录 前言 一.pom.xml引入所需依赖 二.RedisUtils工具类 三.如何使用工具类 四.工具类中批量更新Redis Hash详解 总结 前言 本文将提供一个redis的工具类,可以用在Spring boot以及Spring Cloud项目中,本工具类主要整合了将Redis作为NoSql DB使用时的常用方法,以StringRedisTemplate实例为基础,封装了读取.写入.批量写入多个Redis hash等方法,降低了Redis学习成本,使业务代码更加高效.简洁.优雅. 一.po

随机推荐