gpt4 book ai didi

java - @Value with SpEL 无法从属性中获取值

转载 作者:行者123 更新时间:2023-11-30 06:27:39 26 4
gpt4 key购买 nike

我在示例 Spring Boot 应用程序中有以下代码

@Configuration
@PropertySource("classpath:second.properties")
public class PropertyConfig {

@Value("#{guru.username}")
String user;

@Value("#{guru.password}")
String password;

@Value("#{guru.url}")
String url;


@Bean
FakeDataSource getFakeDataSource() {
FakeDataSource fk = new FakeDataSource();

fk.setName(user);
fk.setPassword(password);
fk.setUrl(url);

return fk;
}

@Bean
PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer placeholderConfigurer= new PropertySourcesPlaceholderConfigurer();
//placeholderConfigurer.setLocation(new ClassPathResource("second.properties"));

return placeholderConfigurer;
}
}

FakeDataSource 是一个简单的 pojo,具有 name、passowrd、url 属性。

然后是我的主应用程序

@SpringBootApplication
public class SpringGuru101DependencyInjectionApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(SpringGuru101DependencyInjectionApplication.class, args);

// Step 2: Make Class
FakeDataSource fakeDataSource = ctx.getBean(FakeDataSource.class);

System.out.println(fakeDataSource.getName());
}
}

但是 sout 语句打印 null,我的 secondary.properties 文件位于我的资源目录中,内容如下

guru.username=Saurabh
guru.password=ido
guru.url=http://example.com

最佳答案

有两个地方需要更正:
(1) 正如我在您的问题的评论中所说,您应该将井口符号 (#) 替换为美元符号 ($),以便从配置文件中读取值。例如:@Value("${guru.username}")

(2) 您在 getPropertySourcesPlaceholderConfigurer 方法前面错过了 public static
修改后的方法应如下所示:

@Bean
public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer placeholderConfigurer= new PropertySourcesPlaceholderConfigurer();
//placeholderConfigurer.setLocation(new ClassPathResource("second.properties"));

return placeholderConfigurer;
}

关于java - @Value with SpEL 无法从属性中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46801727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com