SpringBoot 中 static 静态工具方法获取配置文件属性值

  • Post author:
  • Post category:java

一、使用 @PostConstruct 注解

1.1、原理

@PostContruct 是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。

1.2、代码

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @Configuration本质上还是@Component
 */
//@Configuration
@Component
public class NettyProtConfiguration {

    public static Integer coordinationProt;

    @Value("${netty.server.prot.coordination}")
    public Integer nettyServerProtCoordination;

    @PostConstruct
    public void setCoordinationProt() {
        coordinationProt = this.nettyServerProtCoordination;
    }
}

二、使用 InitializingBean

2.1、原理

当一个类实现这个接口之后,Spring启动后,初始化Bean时,若该Bean实现InitialzingBean接口,会自动调用afterPropertiesSet()方法,完成一些用户自定义的初始化操作。

2.2、代码

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Configuration本质上还是@Component
 */
//@Configuration
@Component
public class NettyProtConfiguration2 implements InitializingBean {

    public static Integer coordinationProt;

    @Value("${netty.server.prot.coordination}")
    public Integer nettyServerProtCoordination;

    @Override
    public void afterPropertiesSet() throws Exception {
        coordinationProt = this.nettyServerProtCoordination;
    }
}

三、测试

3.1、代码

import com.wangjing.socket.netty.NettyProtConfiguration;
import com.wangjing.socket.netty.NettyProtConfiguration2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = "com.wangjing")
public class SocketApplication {


    public static void main(String[] args) {
        SpringApplication.run(SocketApplication.class, args);

        System.out.println("使用 @PostConcust注解的方式,获取常量的值:  " + NettyProtConfiguration.coordinationProt);
        System.out.println("使用 实现InitializingBean接口的方式,常量的值为:  " + NettyProtConfiguration2.coordinationProt);

    }

}
# 配置文件,yml 格式
netty: 
  server:
    prot:
      coordination: 8804

3.2、效果

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!


版权声明:本文为wang_jing_jing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。