yml文件注入属性值的方法

spring:
    profiles:
        active: dev
system:
    account: 123456
    password: 123456
    appid: 1234567890

方式一 使用 @Value() 注解

通过set方法来赋值。属性是static修饰的,get方法也是static修饰的,但是set方法不能是static修饰,使用@Value()注解来修饰set方法

@Configuration
public class SystemApiConfig {

    /**账号*/
    private static String account;

    /**密码*/
    private static String password;

    /**平台三方系统分配的id*/
    private static String appid;

    @Value("${system.account}")
    public void setAccouont(String account){
        this.account = account;
    }

    @Value("${system.password}")
    public void setPassword(String password){
        this.password = password;
    }

    @Value("${system.appid}")
    public void setAppid(String appid){
        this.appid = appid;
    }

    public static String getAccount() {
        return account;
    }

    public static String getPassword() {
        return password;
    }

    public static String getAppid() {
        return appid;
    }
}

 

方式二 @ConfigurationProperties(prefix = ) 注解

只要把set方法设置为非静态,那么这个配置类的静态属性就能成功注入了

@Configuration
@ConfigurationProperties(prefix = "system")
public class SystemApiConfig {

    /**账号*/
    private static String account;

    /**密码*/
    private static String password;

    /**平台三方系统分配的id*/
    private static String appid;

    public static String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        SystemApiConfig.account = account;
    }

    public static String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        SystemApiConfig.password = password;
    }

    public static String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        SystemApiConfig.appid = appid;
    }
}

方式三 @PostConstruct 注解

@PostConstruct 用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行,并且只运行一次

@Configuration
public class SystemApiConfig {

    public static String environment;

    /*从配置文件中获取值**/
    @Value("${spring.profiles.active}")
    public String active;

    @PostConstruct
    public void initializeEnvironment() {
        environment = this.active;
    }
    
    private static RedisTemplate<Object, Object> redisTemplates;

    /**从容器中注入*/
    @Autowired
    private RedisTemplate<Object, Object> redisTemplate;

    @PostConstruct
    public void initializeRedisTemplate() {
        redisTemplates = this.redisTemplate;
    }
}

方式四 实现 InitializingBean 接口,重写 afterPropertiesSet() 方法

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

@Component
public class SystemApiConfig implements InitializingBean {

    @Value("${system.account}")
    private String account;

    @Value("${system.password}")
    private String password;

    @Value("${system.appid}")
    private String appid;

    public static String ACCOUNT;
    
    public static String PASSWORD;
    
    public static String APPID;

    @Override
    public void afterPropertiesSet() throws Exception {
        ACCOUNT=account;
        PASSWORD=password;
        APPID=appid;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值