繁体   English   中英

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

[英]Best practices when using Spring 3 annotations

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

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

实际上推荐的是两种风格的混合,注释涵盖了不会经常更改的内容或者从一次运行到下一次运行(例如@Controller将在应用程序的生命周期中保持这样),而更改并且必须可配置进入XML(例如,邮件smtp地址,应用程序与之交谈的Web服务的端点等)。

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

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

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

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

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

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

所有这些需求的Anotation失败:

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

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

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

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

@Value ,我使用@Value作为通过PropertyPlaceholderConfigurer在外部属性文件中配置的属性。

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

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

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

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

注释肯定是java中“更新”编程将继续的方式。 我使用注释用于各种用途......比如@Scope用于bean的范围, @Required用于使依赖性成为必需,@ @Aspect用于配置建议,@ @Autowired用于使用注释构造函数注入。 从2.5版开始,注释支持一直很好。 看到这里的春天教程 ,其中基于标注问题都覆盖在这里

我认为注释的使用可能导致一些问题的两种情况。 首先,如果要在实体中编写复杂的命名查询(JPA)。 我看到了一些实体代码示例,并问自己代码是否真的是java代码。 程序代码中的许多元数据会降低它的可读性,这会破坏干净的代码原则。

第二个问题是JVM版本之间的可移植性。 注释是1.5+的特征。 如果您的软件应该支持早期的JVM版本,那么您可能不会使用这些版本。

无论如何,您可以随时享受注释,毫无疑问,如果属性仍然存在或输入正确等,您可以节省时间不更改IDE选项卡以检查XML。

对于非常小的项目,如果你没有太多的东西要在春天宣布,你仍然可以使用XML版本。 但是,如果你在一个巨大的项目中,如果你有10个xml的配置,事情可能会非常麻烦。

这可能对你没什么帮助,但在工作中他们不想使用自动装配,因为它需要一个类路径扫描(但我认为这可以是包定义)。 因此,它会根据项目的大小增加应用程序的启动时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM