相关疑难解决方法(0)

Xml配置与基于注释的配置

在我最近一直在研究的一些大型项目中,选择其中一个(XML或Annotation)似乎变得越来越重要.随着项目的增长,一致性对于可维护性非常重要.

我的问题是,人们更喜欢什么.您更喜欢基于XML还是基于注释?或两者?每个人都在谈论XML配置地狱以及如何将注释作为答案,那么注释配置到底是什么?

java xml spring annotations

131
推荐指数
6
解决办法
7万
查看次数

我可以在运行时替换Spring bean定义吗?

请考虑以下情形.我有一个带有bean的Spring应用程序上下文,其属性应该是可配置的,思考DataSourceMailSender.可变应用程序配置由一个单独的bean管理,让我们调用它configuration.

管理员现在可以更改配置值,如电子邮件地址或数据库URL,我想在运行时重新初始化配置的bean.

假设我不能简单地修改上面的可配置bean的属性(例如由FactoryBean或者构造函数注入创建),但必须重新创建bean本身.

有关如何实现这一点的任何想法?我很高兴收到有关如何组织整个配置的建议.没有什么是固定的.:-)

编辑

为了澄清一点:我不是问如何更新配置或如何注入静态配置值.我会尝试一个例子:

<beans>
    <util:map id="configuration">
        <!-- initial configuration -->
    </util:map>

    <bean id="constructorInjectedBean" class="Foo">
        <constructor-arg value="#{configuration['foobar']}" />
    </bean>

    <bean id="configurationService" class="ConfigurationService">
        <property name="configuration" ref="configuration" />
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

所以有一个constructorInjectedBean使用构造函数注入的bean .想象一下,bean的构造非常昂贵,因此使用原型范围或工厂代理不是一种选择DataSource.

我想要做的是每次更新配置时(通过configurationServicebean constructorInjectedBean重新创建并重新注入应用程序上下文和依赖bean).

我们可以放心地假设constructorInjectedBean正在使用接口,因此代理魔术确实是一种选择.

我希望能让这个问题更清楚一些.

java spring

68
推荐指数
3
解决办法
5万
查看次数

标签 统计

java ×2

spring ×2

annotations ×1

xml ×1