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

时间:2011-04-21 20:15:24

标签: java spring annotations spring-3

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

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

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

我的问题是注释的内容和程度如何?

此时注释会使事情变得更难而不是更容易吗?是否完全采用了技术(第3版),以便能够做出这样的陈述,还是需要更多的时间让人们获得经验并反思这个问题?

5 个答案:

答案 0 :(得分:13)

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

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

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

  • 非侵入性
  • 改变任何 a的实现/配置 豆子随时
  • 给予集中和控制 放置配置的地方

所有需要的Anotation失败:

  • 他们介绍了与弹簧的耦合 (您只能使用标准的anotation 但是一旦你至少有一个 春天anotation这不再是 真)
  • 您需要修改源代码和 重新编译以更改bean 实施或配置
  • 您的注释无处不在 码。可能很难找到 真正使用的是什么bean 阅读代码或XML配置 文件。

事实上,我们已经转移了我们的重点:

  • 我们意识到我们几乎从未 提供了几个实现 我们的服务。
  • 我们意识到依赖于 API并没有那么糟糕。
  • 我们意识到我们不仅使用春天 用于真正的依赖注入 不再,但主要是增加 提高生产力并减少java代码 详细程度。

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

答案 1 :(得分:6)

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

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

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

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

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

答案 2 :(得分:3)

注释肯定是java中“更新”编程将继续的方式。我使用注释用于各种用途...例如@Scope用于bean的范围,@Required用于使必要依赖,@Aspect用于配置建议,@Autowired用于构造函数注入使用注释。从2.5版开始,注释支持一直很好。 请参阅此处了解spring tutorial,其中涵盖了基于注释的问题 here

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:0)

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