【问题标题】:Spring Java Config. Use of PropertiesFactoryBean in the configuration file春季 Java 配置。在配置文件中使用 PropertiesFactoryBean
【发布时间】:2016-02-11 19:47:22
【问题描述】:

我有以下配置文件

@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默认的,对我来说是不正确的。

你能帮帮我吗?

【问题讨论】:

    标签: java spring properties configuration external


    【解决方案1】:

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

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

    然后在java类中使用它

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2019-10-15
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多