当前位置: 代码迷 >> 综合 >> springboot2.x 中 @Configuration类中,无法使用@Value注入配置
  详细解决方案

springboot2.x 中 @Configuration类中,无法使用@Value注入配置

热度:44   发布时间:2024-02-04 15:03:59.0

springboot2.x 中 @Configuration类中,无法使用@Value注入配置,获取的一直为null,此时需要通过Environment来获取,但是配置类需要实现EnvironmentAware接口。

/*** 实现EnvironmentAware接口的目的是,* 在@Configuration中无法通过@Value注解注入配置,* 所以通过Environment获取配置,但是需要实现EnvironmentAware接口*/
@Configuration
public class ShiroConfig implements EnvironmentAware {private final String CACHE_KEY = "shiro:cache:";private final String SESSION_KEY = "shiro:session:";private final int EXPIRE = 1800;private Environment environment;private String host;private int port;private int timeout;private String password;@Overridepublic void setEnvironment(Environment environment) {this.environment = environment;}/*** 初始化redis信息,通过environment获取配置信息,* 在@configuration中,@value无效*/private void initRedis() {Optional<String> hostOpt = Optional.ofNullable(environment.getProperty("spring.redis.host"));host = hostOpt.orElse("localhost");Optional<String> portOpt = Optional.ofNullable(environment.getProperty("spring.redis.port"));port = Integer.valueOf(portOpt.orElse("6379"));Optional<String> timeoutOpt = Optional.ofNullable(environment.getProperty("spring.redis.timeout"));timeout = Integer.valueOf(timeoutOpt.orElse("1000"));Optional<String> passwordOpt = Optional.ofNullable(environment.getProperty("spring.redis.password"));password = passwordOpt.orElse("");}

 

  相关解决方案