How to inject all properties from Spring into a bean?
我想将包含spring知道的所有属性(由库插入)的映射注入到我通过spring xml获得的配置类中。那可能吗?
1 2 3 4 5 6 7 | <bean class="Config"> <constructor-arg name="env"> <map> //inject all properties? </map> </constructor-arg> </bean> |
您为什么不只注入Spring Context?通过上下文,您可以通过其名称查找任何bean。
编辑:
根据此答案,您还可以使用以下内容:
1 2 3 4 5 | <bean class="Config"> <constructor-arg name="env"> <util:properties location="${path.to.properties.file}"/> </constructor-arg> </bean> |
其中" env"构造函数的参数是java.util.Properties对象。
对于支持环境注入的更高版本的Spring(包括spring-boot),您可以使用它来访问所有加载的属性。
要回答此问题,请插入
1 2 3 4 5 6 7 | @Autowired public Config(AbstractEnvironment environment) { MutablePropertySources propertySources = environment.getPropertySources(); // inspect propertySources to see all properties loaded by Spring } |
您是否可以扩展使用的库类并实例化bean,而不是默认的库类?这样您便可以检查所有值。
否则,如果您知道库的签名,则始终可以使用AOP在库周围编织一些代码并访问那里的属性。稍微复杂一点,但仍然可以满足您的需求。您绝对可以使用AspectJ(需要更多的配置),甚至可以使用Spring AOP,这取决于事物的访问方式。
如果您想/需要更多的见解,请告诉我。