Spring - 注解 vs XML 哪个好?

  • Spring中,使用注解@Autowired进行注入好,还是使用xml配置进行注入好?

    • 先讲结论,使用注解@Autowired注入比较好

    • 当时Spring开发的初衷是为了解决类与类之间的强藕合new,所以当时提出了xml配置注入bean的方法,就是让代码只关注我需要什麽service,但此service是由哪个实现类提供的我并不关心

      • 使用xml的好处就是,实现类更换的时候并不需要去改动代码,只要去改动xml配置,将注入的bean改成另一个实现类就可以了,如此可以达到类与类之间的松藕合

    • 但是到了Spring3.0之后,他们开始提出了使用@Autowired注解来进行bean的注入

      • 有的人可能会觉得,如果使用@Autowired、@Qualifier来注入,那麽假设我要改注入实现类的话,得去改java代码中的@Qualifier,那这样还是得改代码,那这样使用Spring注入和使用new,又有什麽差别?是不是还是使用xml比较好?

      • 事实上,使用注解确实会有这个问题没错,不过经过长时间的项目经验下来,你会发现,我们其实很少会去改注入的实现类的 (天天改服务还要不要命?)

      • 而注解提供的好处却是不少,像是简化xml配置的冗长、使用注解比较直观且容易、并且是类型安全的(compiler可以扫描注解,判断注入的类型是否正确,但他扫描不了xml文件)

      • 因此就算使用注解@Autowired去改变注入的实现类比xml更困难,但他其他大量的优点足以掩盖过这个缺点,这也是为什麽Spring觉得使用注解配置比使用xml配置更好的理由

    • 所以到目前为止(Spring4.0),虽然Spring官方本身没有明说抛弃xml配置,不过事实上Spring已经转往注解配置方向前进了,SpringBoot就是最好的例子

      • SpringBoot中只有一个properties文件负责配置一些不可避免的设定,像是数据库连接、mvc模板配置....,除此之外没有任何一个xml文件来定义bean,全部都是使用注解来配置

  • 注解 vs XML 优缺点比较

    • 注解

      • 优点

        • 简化配置

        • 使用起来直观且容易,提升开发效率

        • 类型安全

      • 缺点

        • 改变实现类比xml困难

    • xml

      • 优点

        • 类与类间的松藕合,容易扩展、更换

        • 对象间的关系一目了然

      • 缺点

        • 配置冗长,且还要额外多维护一份配置

        • 类型不安全,compile无法帮忙校验,运行期才会发现错误

你可能感兴趣的:(Spring)