考虑用JavaConfig替换Spring XML配置

Spring文章正在此博客上成为一种趋势,我可能应该申请SpringSource职位:-)

我的同事有时会因为我在Spring中使用XML配置的固执而诅咒我。 是的,看起来好像是2000年代,但XML具有一定的优势:

  1. 配置是集中式的,它不会分散在所有不同的组件中,因此您可以在一个位置上很好地了解Bean及其接线
  2. 如果您需要分割文件,没问题,Spring可以帮助您。 然后在运行时通过内部<import>标记或外部上下文文件聚合将它们重新组装
  3. 仅XML配置允许显式接线-与自动接线相反。 有时候,对于我自己的口味而言,后者有些不可思议。 它的明显简单性隐藏了真正的复杂性:我们不仅需要在按类型自动装配和按名称自动装配之间切换,而且更重要的是,在所有符合条件的机器人中选择相关bean的策略以及经验丰富的Spring开发人员。 配置文件似乎使此操作更容易,但它相对较新,鲜为人知
  4. 最后但并非最不重要的一点是,XML与Java文件完全正交:两者之间没有耦合,因此该类可以在具有不同配置的多个上下文中使用

XML的唯一问题是,您必须等到运行时才能发现Bean或其他一些愚蠢的boo-boo中的错别字。 另一方面,使用Spring IDE插件(或集成的Spring Tools Suite)绝对可以为您提供帮助。

JavaConfig是XML以及对bean类的直接注释的一种有趣替代方法,它是从v3.0开始嵌入到Spring本身的以前的独立项目。 它将XML解耦优势与Java编译时检查相结合。 可以将JavaConfig视为等效的XML文件,仅用Java编写。 整个文档当然都可以在线获得,但是本文只是让您开始使用JavaConfig。 作为示例,让我们从以下XML文件迁移到JavaConfig

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
    <beanid="button"class="javax.swing.JButton">
        <constructor-argvalue="Hello World"/>
    </bean>
    <beanid="anotherButton"class="javax.swing.JButton">
        <propertyname="icon"ref="icon"/>
    </bean>
    <beanid="icon"class="javax.swing.ImageIcon">
        <constructor-arg>
            <beanclass="java.net.URL">
                <constructor-argvalue="http://morevaadin.com/assets/images/learning_vaadin_cover.png"/>
            </bean>
        </constructor-arg>
    </bean>
</beans>

等效文件如下:

importjava.net.MalformedURLException;
importjava.net.URL;
importjavax.swing.Icon;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;

@Configuration
publicclassMigratedConfiguration{

    @Bean
    publicJButtonbutton(){
        returnnewJButton("Hello World");
    }

    @Bean
    publicJButtonanotherButton(Iconicon){
        returnnewJButton(icon);
    }

    @Bean
    publicIconicon()throwsMalformedURLException{
        URLurl=newURL("http://morevaadin.com/assets/images/learning_vaadin_cover.png");
        returnnewImageIcon(url);
    }
}

用法比简单要简单:使用@Configuration注释主类,并使用@Bean注释单个生产者方法。 恕我直言,唯一的缺点是它使用自动装配。 除此之外 ,它还可以工作。

请注意,在Web环境中,应使用以下几行来更新Web部署描述符:

<context-param>
    <param-name> contextClass </param-name>
    <param-value> org.springframework.web.context.support.AnnotationConfigWebApplicationContext </param-value>
</context-param>
<context-param>
    <param-name> contextConfigLocation </param-name>
    <param-value> com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration </param-value>
</context-param>

本文来源是Maven的/ Eclipse格式提供在这里

翻译自: https://blog.frankel.ch/consider-replacing-spring-xml-configuration-with-javaconfig/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值