将spring bean放入Application范围?

时间:2017-08-23 22:48:32

标签: spring spring-mvc tomcat

这与this question相关:

我需要在启动时将Spring bean注入Tomcat应用程序的范围:

<beans:bean id="myUrl" class="java.lang.String" >
    <beans:constructor-arg type="java.lang.String">
        <beans:value>${my.registry.location:some.url}</beans:value>
    </beans:constructor-arg>
</beans:bean>

有没有一种灵活的方法可以从Spring XML配置中执行此操作,还是需要覆盖一些servlet方法(ugh)?

1 个答案:

答案 0 :(得分:0)

我想我会发布这个以防万一。 Spring有一个bean,可以在初始化时执行此操作:ServletContextAttributeExporter

你这样使用它:

<bean id="myBean" class="java.lang.String" >
    <constructor-arg type="java.lang.String">
        <value>${some.property.value}</value>
    </constructor-arg>
</bean>

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="attributes">
        <map>
            <entry key="myBean" value-ref="myBean" />
        </map>
    </property>
</bean>

然后,您可以在非Spring感知的JSP代码中执行类似的操作(例如):

<div>
    Value of my bean is:  ${applicationScope.myBean}    
</div>