在 Spring 引导中无法在 @bean 中使用 @value
Not Able to use @value inside @bean in Spring boot
您好,我正在使用 spring 2.4 版本并从 spring cloud
伪造云
但是当我从 属性 文件
中读取时,我卡住了,无法在 @bean
方法中使用一些常量值
@Configuration
public class FeignClientConfiguration {
@Value("${app.basic.auth.username}")
private static String userName;
@Value("${app.basic.auth.password}")
private static String password;
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
// return new BasicAuthRequestInterceptor("admin", "admin");
return new BasicAuthRequestInterceptor(userName, password);
}
}
但是我虽然提供了这样的价值,但我会工作得很好
return new BasicAuthRequestInterceptor("admin", "admin");
我不确定为什么这行不通,你能给我一些建议吗?
找出答案的最佳方法是创建一个简单的 @PostConstruct 方法并打印两个值..如果它们是 null
那么这意味着 spring 无法解析那些 属性 值。
确保您已使用 PropertyPlaceholderConfigurer 初始化属性并且 属性 文件的路径正确(即使相对于类路径)。
密切关注日志,不要忽略任何异常。
您应该将配置 class 和 basicAuthRequestInterceptor 方法分开。
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "app")
public class LoginProperties {
private String username;
private String password;
}
在您的属性文件中,具有以下内容:
app.username = user
app.password = 123
然后在您的 controller/service class 中执行以下操作。
@Autowired
private LoginProperties loginProperties;
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor(loginProperties.getUserName(), loginProperties.password());
}
您好,我正在使用 spring 2.4 版本并从 spring cloud
伪造云但是当我从 属性 文件
中读取时,我卡住了,无法在@bean
方法中使用一些常量值
@Configuration
public class FeignClientConfiguration {
@Value("${app.basic.auth.username}")
private static String userName;
@Value("${app.basic.auth.password}")
private static String password;
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
// return new BasicAuthRequestInterceptor("admin", "admin");
return new BasicAuthRequestInterceptor(userName, password);
}
}
但是我虽然提供了这样的价值,但我会工作得很好
return new BasicAuthRequestInterceptor("admin", "admin");
我不确定为什么这行不通,你能给我一些建议吗?
找出答案的最佳方法是创建一个简单的 @PostConstruct 方法并打印两个值..如果它们是 null
那么这意味着 spring 无法解析那些 属性 值。
确保您已使用 PropertyPlaceholderConfigurer 初始化属性并且 属性 文件的路径正确(即使相对于类路径)。
密切关注日志,不要忽略任何异常。
您应该将配置 class 和 basicAuthRequestInterceptor 方法分开。
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "app")
public class LoginProperties {
private String username;
private String password;
}
在您的属性文件中,具有以下内容:
app.username = user
app.password = 123
然后在您的 controller/service class 中执行以下操作。
@Autowired
private LoginProperties loginProperties;
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor(loginProperties.getUserName(), loginProperties.password());
}