我想将包含Spring知道的所有属性(由库插入)的地图注入到我通过spring xml的配置类中。那可能吗?
<bean class="Config">
<constructor-arg name="env">
<map>
//inject all properties?
</map>
</constructor-arg>
</bean>
答案 0 :(得分:1)
为什么不注入Spring Context?通过Context,您可以通过其名称查找任何bean。
修改强>
从此answer,您还可以使用以下内容:
<bean class="Config">
<constructor-arg name="env">
<util:properties location="${path.to.properties.file}"/>
</constructor-arg>
</bean>
你的“env”构造函数参数是java.util.Properties对象。
答案 1 :(得分:0)
您是否可以扩展您使用的库类并实例化您的bean而不是默认库?然后你就可以检查所有的值了。
否则,如果你知道库的签名,你总是可以使用AOP在库周围编织一些代码并访问那里的属性。有点复杂,但仍然可以让你到达你需要去的地方。您肯定可以使用AspectJ(需要更多配置)甚至Spring AOP,具体取决于访问方式。
如果您想要/需要更多的见解,请告诉我。
答案 2 :(得分:0)
对于支持注入Environment的更高版本的Spring(包括spring-boot),您可以使用它来访问所有加载的属性。
要回答此问题,请插入AbstractEnvironment
,以便您可以调用getPropertySources()方法,该方法将允许您查看从何处加载了属性(例如文件,OS变量等)< / p>
@Autowired
public Config(AbstractEnvironment environment)
{
MutablePropertySources propertySources = environment.getPropertySources();
// inspect propertySources to see all properties loaded by Spring
}