gpt4 book ai didi

java - Spring Java 配置。配置文件中PropertiesFactoryBean的使用

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:20 26 4
gpt4 key购买 nike

我有以下配置文件

@Configuration
@ComponentScan(basePackages = "com.foo")
@EnableTransactionManagement
public class AppSpringConfiguration {

@Autowired
private Environment env;

@Autowired
private ApplicationContext appContext;

@Value("#{cvlExternalProperties['dbDriverClassName']}")
private String dbDriverName;

@Bean
public PropertiesFactoryBean cvlExternalProperties() {
PropertiesFactoryBean res = new PropertiesFactoryBean();
res.setFileEncoding("UTF-8");
res.setLocation(new FileSystemResource(env.resolvePlaceholders("${MY_ENV_VAR}") + "external.properties"));
return res;
}

@Bean
public BasicDataSource datasource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("myDriverClassName");
basicDataSource.setUrl("MyDbUrl");
basicDataSource.setUsername("myUser");
basicDataSource.setPassword("myPass");
return basicDataSource;
}
}

在外部属性文件中我已经

dbUrl=jdbc:mysql://localhost:3306/someDb
dbUser=someUser
dbPassword=somePass
dbDriverClassName=com.mysql.jdbc.Driver

我可以通过什么方式使用 datasource() 方法中的 cvlProperties?我试过了

env.getProperty("dbDriverClassName")
env.getProperty("#cvlProperties['dbDriverClassName']")

但我无法检索属性。字段 dbDriverName 已正确填写,这意味着 bean 声明是正确的。我想使用 PropertyFactoryBean 类,因为这样我可以指定要使用的编码。

如果我在配置类顶部使用以下注释

@PropertySource("file:${MY_ENV_VAR}/external.properties")

我可以使用这段代码检索属性

env.getProperty("dbDriverClassName")

但是PropertySource注释使用的编码是Windows默认的,对我来说是不正确的。

你能帮我吗?

最佳答案

目前的解决方案(我不太喜欢)是使用注释@Value来声明属性

@Value("#{cvlExternalProperties['dbDriverClassName']}")
private String dbDriverClassName;

然后在java类中使用它

关于java - Spring Java 配置。配置文件中PropertiesFactoryBean的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35348695/

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