如何将Spring中的所有属性注入bean中?

时间:2012-04-13 23:10:52

标签: java spring

我想将包含Spring知道的所有属性(由库插入)的地图注入到我通过spring xml的配置类中。那可能吗?

<bean class="Config">
  <constructor-arg name="env">
    <map>
    //inject all properties?
    </map>
  </constructor-arg>
</bean>

3 个答案:

答案 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
}