繁体   English   中英

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

[英]How to inject all properties from Spring into a bean?

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

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

为什么不直接注入 Spring Context? 通过上下文,您可以通过名称查找任何 bean。

编辑:

从这个答案中,您还可以使用以下内容:

<bean class="Config">
  <constructor-arg name="env">
    <util:properties location="${path.to.properties.file}"/>
  </constructor-arg>
</bean>

您的“env”构造函数参数是一个 java.util.Properties 对象。

您不能扩展您使用的库类并实例化您的 bean 而不是默认库类吗? 然后您将能够检查所有值。

否则,如果您知道库的签名,您总是可以使用 AOP 在库周围编织一些代码并访问那里的属性。 有点复杂,但仍然可以让你到达你需要去的地方。 您绝对可以使用AspectJ (需要更多配置)甚至Spring AOP ,具体取决于访问内容的方式。

如果您想/需要对此有更多了解,请告诉我。

对于支持环境注入的更高版本的 Spring(包括 spring-boot),您可以使用它来访问所有加载的属性。

要回答这个问题,请注入一个AbstractEnvironment以便您能够调用 getPropertySources() 方法,该方法将允许您查看从何处加载属性(例如文件、操作系统变量等)

@Autowired
public Config(AbstractEnvironment environment)
{
    MutablePropertySources propertySources = environment.getPropertySources();

    // inspect propertySources to see all properties loaded by Spring
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM