如何根据 属性 文件或环境变量参数化 spring constructor-arg 注入?
how can I parametrize the spring constructor-arg injection based on the property file or environmental variable?
我的 spring
应用程序中有以下构造函数:
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
<constructor-arg>
<bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">
<constructor-arg>
<value type="java.io.File">classpath:metadata/idp-test.xml</value>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata"/>
</constructor-arg>
</bean>
</list>
</constructor-arg>
</bean>
现在,我有 2 个不同的 xml 配置文件,一个用于测试环境,一个用于生产环境。上面的配置中有没有一种方法可以有某种 switch
(或者 if-else
可能?),基于它会有 idp-test.xml
或不同的 [=17= 】 注入?我假设它将基于 属性 文件或例如环境变量,它将存储它是哪个环境的信息(测试或生产)。
您是否正在寻找仅在激活特定配置文件时才允许启用 bean 的配置文件功能?
如果是,您可以先为 bean 配置配置文件:
<beans profile="prod">
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
</bean>
</bean>
<beans profile="test">
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
</bean>
</bean>
和activating a particular profile通过在启动JVM的命令中配置JVM系统属性spring.profiles.active
:
-Dspring.profiles.active="prod"
或从环境变量激活:
export spring_profiles_active=prod
在这种情况下,只有具有 prod
配置文件且未指定任何配置文件的 bean 将被启用。
我的 spring
应用程序中有以下构造函数:
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
<constructor-arg>
<bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">
<constructor-arg>
<value type="java.io.File">classpath:metadata/idp-test.xml</value>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata"/>
</constructor-arg>
</bean>
</list>
</constructor-arg>
</bean>
现在,我有 2 个不同的 xml 配置文件,一个用于测试环境,一个用于生产环境。上面的配置中有没有一种方法可以有某种 switch
(或者 if-else
可能?),基于它会有 idp-test.xml
或不同的 [=17= 】 注入?我假设它将基于 属性 文件或例如环境变量,它将存储它是哪个环境的信息(测试或生产)。
您是否正在寻找仅在激活特定配置文件时才允许启用 bean 的配置文件功能?
如果是,您可以先为 bean 配置配置文件:
<beans profile="prod">
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
</bean>
</bean>
<beans profile="test">
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
</bean>
</bean>
和activating a particular profile通过在启动JVM的命令中配置JVM系统属性spring.profiles.active
:
-Dspring.profiles.active="prod"
或从环境变量激活:
export spring_profiles_active=prod
在这种情况下,只有具有 prod
配置文件且未指定任何配置文件的 bean 将被启用。