如何创建与父bean解耦的集合数据的spring bean?

发布于 2024-10-18 09:32:42 字数 1662 浏览 3 评论 0 原文

Spring有能力 初始化核心Java集合类型的值

我有一个复杂的集合类型 Map> map 及其在 spring 配置中定义的初始值:

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map">
        <map>
            <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>
            </entry>
        </map>
    </property>
</bean>

我想以下一种方式重写我的配置:将其拆分为 2 个 bean 以提高可读性

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map" ref-id="myMap"/>        
</bean>

<bean id="myMap" ..????..>
        <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>

            </entry>
</bean>

我可以在不创建其他类的情况下实现这一目标吗?

Spring has ability to initialisate values of core java collection types.

I have a complex collection type Map<String, Set<String>> map and it inital value defined in spring config:

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map">
        <map>
            <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>
            </entry>
        </map>
    </property>
</bean>

I want rewrite my config in next manner: Split it on 2 beans for more readability

<bean id="dao" class="ru.mypkg.dao.DaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="map" ref-id="myMap"/>        
</bean>

<bean id="myMap" ..????..>
        <entry key="TABLE">
                <set>
                    <value>COMMENT</value>
                    <value>INDEX</value>
                </set>
            </entry>
            <entry key="VIEW">
                <set>
                    <value>COMMENT</value>
                </set>

            </entry>
</bean>

Can I achieve that with no creating additional classes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

命硬 2024-10-25 09:32:42

当然,使用 命名空间。请参阅Spring 文档 C.2.2.5

创建复杂配置的另一种方法是使用 @Configuration 方法,或者 FactoryBean 接口。

Certainly, using the <util:map> namespace. See the Spring documentation C.2.2.5.

Another way to create complex configuration is using the @Configuration approach, or alternatively the FactoryBean interface.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文