最近在客户这边部署环境,一些配置文件需要迁移到disconf去。
遇到一个问题,就是druid连接池加载进来的时候取不到@value("${}")的值,那就先写死配置,接下来加载到mongo,这些都可以正确读到。
debug调试发现,在加载druid配置文件的时候,
DisconfDataGetter.getByFile("public.properties")里面没有值
spring-disconf.xml中配置了四个bean,当加载
configproperties_disconf的时候会有public.properties
那就是想要在加载druid之前就加载configproperties_disconf这个bean,用到@DependsOn注解
/** * 在加载disconf之后加载 * @return */ @Primary @Bean("dataSource") @DependsOn({"configproperties_disconf"}) public DataSource druid() { log.info("druid init......."); Map<String, Object> fileInfo = DisconfDataGetter.getByFile("public.properties"); DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(fileInfo.get("druid.url").toString()); dataSource.setName(fileInfo.get("druid.name").toString()); dataSource.setUsername(fileInfo.get("druid.username").toString()); dataSource.setPassword(decryptPwd(fileInfo.get("druid.password").toString(), fileInfo.get("db.decryptkey").toString())); dataSource.setDriverClassName("org.postgresql.Driver"); //初始化取最小的 dataSource.setInitialSize(Integer.valueOf(fileInfo.get("druid.minIdle").toString())); dataSource.setMaxActive(Integer.valueOf(fileInfo.get("druid.maxActive").toString())); dataSource.setMinIdle(Integer.valueOf(fileInfo.get("druid.minIdle").toString())); dataSource.setMaxWait(5000L); dataSource.setValidationQuery("SELECT 1"); return dataSource; }