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