使用Spring 3注释时的最佳实践

Ele*_*naT 16 java spring annotations spring-3

我正在寻找使用Spring 3注释时的一些最佳实践.

我目前正在转向Spring 3,从我到目前为止所读到的内容,我看到很多重点都放在使用注释和远离XML配置上.

实际上推荐的是两种风格的混合,注释涵盖了不会经常变化的事物或者从一次运行到另一次运行的事物(例如@Controller,应用程序的生命周期将保持不变),而变化的事物和必须可配置进入XML(例如邮件smtp地址,应用程序与之交谈的Web服务的端点等).

我的问题是应该注释注释到什么程度?

在哪一点上注释会使事情变得更难而不是更容易?技术(春季3)是否完全被采用以便能够做出这样的陈述,还是需要更多的时间让人们获得经验并然后反思这个问题?

Nic*_*uet 13

获得真正的高级信息总是很困难的.

简单的教程"看看我的博客,我复制了来自Spring Source网站的hello word教程......现在你可以在任何地方添加花哨的注释,它解决了我们所有的问题,包括癌症和饥饿." 是不是很有用.

如果你还记得正确的春天核心有几个目的,其中包括:

  • 是非侵入性的
  • 随时更改bean的任何实现/配置
  • 提供一个集中和受控的位置来放置您的配置

所有这些需求的Anotation失败:

  • 它们引入了与弹簧的耦合(你可以只使用标准的anotation但是只要你有至少一次弹簧旋转,这就不再是真的了)
  • 您需要修改源代码并重新编译以更改bean实现或配置
  • 注释无处不在代码中.通过阅读代码或XML配置文件,很难找到真正使用的bean.

事实上,我们改变了我们的重点:

  • 我们意识到我们几乎从不提供多种服务实现.
  • 我们意识到依赖API并不是那么糟糕.
  • 我们意识到我们不仅仅使用spring进行真正的依赖注入,而且主要是为了提高生产力并减少java代码的冗长度.

所以当它出现时我会使用anotations.当它纯粹是为了删除样板代码,冗长.我会将XML配置文件用于您想要配置的东西,即使它只是在单元测试中提供服务的存根实现.


Boz*_*zho 6

kunal指出,我@Value用于在外部属性文件中配置的属性PropertyPlaceholderConfigurer.

什么时候使用xml没有严格的限制,但我使用的是xml:

  • 当bean不是我控制的类时
  • 当对象与基础架构或配置相关而不是与业务逻辑相关时.
  • 当类具有一些我希望可配置的原始属性时,但不一定通过外部化配置.

回应你的评论:春天被广泛采用,但"好"和"坏"是非常主观的.即便是我的台词也不是普遍的真理.XML,注释和编程配置都存在于某个目的,每个开发人员/公司都有自己的偏好.

正如我所说 - 没有严格的界限,也没有注释的普遍良好做法.