1

如何避免重复使用弹簧占位符?通常我会加载所有属性,然后一个一个地使用它们,将所有内容重复 3 次(属性文件、来自 xml 的属性名称、占位符名称):

<context:property-placeholder location="classpath:/spring/application.properties,
                                        classpath:/spring/${env}.properties" />

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="properties">
            <value>
                user = ${db.user}
                password = ${db.passwd}
            </value>
        </property>
</bean>

我可以:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="properties" ref="allProperties"/>
</bean>

但是,这不是一个好的解决方案,因为:

  • 如果我有很多组件,那么可能会有一些属性冲突
  • 我不想传递密码
  • 我也不想为每个组件拆分我的配置文件。我想每个环境有 1 个全局文件和 1 个文件。拆分属性会使维护变得困难

所以问题是:有什么可以让我选择应该传递的属性(按前缀)?就像是:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="properties">
            <bean class="...PropertiesFilter">
                <property name="prefix" value="c3p0"/>
                <property name="src" ref="allProperties"/>
            </bean>
        </property>
</bean>

我知道,写起来并不难,但也许 spring 已经有了类似的东西(语法更好)。

4

0 回答 0