我正在使用注释来配置我的spring环境,如下所示:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
这导致我的财产default.properties成为的一部分Environment。我想在@PropertySource这里使用该机制,因为它已经可以根据环境设置(例如config_dir位置)通过多个后备层和不同的动态位置来重载属性。我只是剥离了后备,以使示例更容易。
但是,我现在的问题是我想在中配置例如我的数据源属性default.properties。您可以将设置传递给数据源,而无需详细了解数据源期望使用什么设置
Properties p = ...
datasource.setProperties(p);
但是,问题是,Environment对象既不是Properties对象,也不是对象,也不是Map任何可比较的对象。从我的角度来看,这是根本不可能的访问环境的所有值,因为没有keySet或iterator方法或任何可比性。
Properties p <=== Environment env?
我想念什么吗?是否可以通过Environment某种方式访问对象的所有条目?如果是,我可以将条目映射到Map或Properties对象,甚至可以通过前缀过滤或映射它们-将子集创建为标准Java Map...这就是我想要做的。有什么建议么?
缥缈止盈