<mvc:resources>我可以指向location =“http:path / to / s3 / bucket”吗?

时间:2015-05-26 07:48:41

标签: java spring spring-mvc amazon-s3 resources

我正在开发一个Spring MVC项目,现在我需要将我的资源转移到s3桶,但我需要一种机制来方便地在本地和s3之间切换。 我在dispatcher-servlet.xml中有以下片段

例如。 对于同一项目上的文件

<mvc:resources location="/app-res/" mapping="/app-res/**"/>

对于本地驱动器上的文件,我可以

<mvc:resources location="file:D:/app-res/" mapping="/app-res/**"/>

我可以这样做

<mvc:resources location="http:path/to/s3/bucket" mapping="/app-res/**"/>

我尝试过这样做,但无法找到解决方案

1 个答案:

答案 0 :(得分:0)

使用Spring Profiles是一种可能的解决方案:

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-definition-profiles-xml

参数化外部网址:

<mvc:resources location="${path.to.s3.bucket}" mapping="/app-res/**"/>

创建一些配置文件定义:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="...">

    <beans profile="dev">
        <bean id="applicationPropertiesPlaceholder"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:profiles/dev.profile.properties</value>
                </list>
            </property>
        </bean>     
    </beans>

    <beans profile="production">
        <bean id="applicationPropertiesPlaceholder"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:profiles/production.profile.properties</value>
                </list>
            </property>
        </bean>         
    </beans>

</beans>

创建属性文件,然后只需将-Dspring.profiles.active=xyz附加到服务器的JVM args。