1

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

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

3 回答 3

1

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

编辑:

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

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

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

于 2012-04-13T23:39:45.363 回答
0

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

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

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

于 2012-04-19T17:13:05.390 回答
0

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

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

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

    // inspect propertySources to see all properties loaded by Spring
}
于 2020-04-07T09:49:59.790 回答