我们对第一个Java EE Spring项目的"最佳实践"是什么?

时间:2020-03-05 18:39:06  来源:igfitidea点击:

我目前正在尝试使用Spring框架进行Java EE开发。由于我是Spring的新手,很难想象一个好的运行项目应该如何开始。

对于初学者,我们是否有最佳实践,建议或者主要建议?我们是如何从Spring大项目或者类似小型教程的应用程序开始的?我们立即使用了哪种技术:AOP,复杂的Hibernate ...

解决方案

回答

自从我使用spring已经有很多年了,我不能说我是它的粉丝,但我知道App Fuse工具(https://java.net/projects/appfuse/)对帮助人们很有帮助在生成我们需要开始的所有工件方面进行引导。

回答

首先关注Spring的心脏:依赖注入。一旦我们了解了可以使用DI的所有方式,然后开始考虑更有趣的部分,例如AOP,Remoting,JDBC模板等。因此,我最好的建议是让我们从核心中使用Spring。

最佳实践?如果我们使用标准XML配置,请管理单个文件的大小并明智地对其进行注释。我们可能认为我们和其他人会完全理解bean定义,但实际上,与普通的旧Java代码相比,它们很难返回。

祝你好运!

回答

我实际上非常喜欢Spring。在我们普通的J2EE Java Bean中,这真是轻而易举。

我建议实现Spring提供的示例:

http://static.springframework.org/docs/Spring-MVC-step-by-step/

另外,我决定全力以赴,并在我的Spring应用程序中添加了Hibernate;),因为Spring为Hibernate提供了出色的支持... :)

但是,我确实有一个DO N'T,这是我学到的很难的方法(生产中的产品)...如果我们仅实现Controller接口,并返回ModelAndView对象以及该接口提供的一些数据,那么Spring确实会进行垃圾收集资源,用于尝试缓存那些数据。因此请小心将大数据放入那些ModelAndView对象中,因为只要查看该页面,只要服务器处于空中状态,它们就会占用服务器内存。

回答

一个很好的入门方法是专注于" Springframework"。 Spring产品组合已经发展到围绕企业软件各个方面的大量项目。在开始时坚持核心,并尝试掌握概念。熟悉内核后,下载最新的二进制文件并查看Spring的petclinic示例。它很好地概述了SpringSource提供的各种项目。

尽管文档非常好,但是在我们掌握了核心概念之后,我还是建议我们读一本书。我发现该文档存在问题,因为它不够深入,无法为我们提供所需的所有详细信息。

回答

Spring也非常关乎单元测试以及类的可测试性。这基本上意味着考虑模块化,关注点分离,通过接口引用类等。

回答

如果我们只是想花一点时间看看是否喜欢它,我建议使用Spring的JDBC和/或者Hibernate支持从DAO层开始。这将使我们了解很多核心概念,但是这样做的方式很容易与应用程序的其余部分隔离。这是我遵循的方法,在使用Spring构建一个完整的应用程序之前,它是一个很好的热身。

回答

从这里开始,我实际上认为它是我已阅读的最佳软件开发书籍之一。
Spring MVC和Web Flow专家

了解MVC类的新的基于注释的配置。这是Spring 2.5的一部分。使用基于注释的类将使编写单元测试变得容易得多。减少XML的数量也是一件好事。

哦,是的,如果我们使用的是Spring单元测试,那么最好还是进行单元测试。 :)为所有Web和服务层类编写单元测试。

阅读有关域驱动设计的文章。我们可以在Spring Application的所有级别上使用Domain Object类,这意味着我们将拥有一个非常强大的Domain Model。利用它。

但是,在将Domain Object类用于表单填充时,我们将需要注意有关Spring Framework的最新安全性问题。服务器端的讨论揭示了关闭注释漏洞的方法。

回答

小技巧,我发现根据应用程序的关注对我的Spring xml上下文文件进行模块化和清晰标记很有帮助。这是我从事的Web应用程序的示例:

  • persistence.xml-我的DAO /存储库。依赖于datasource.xmlbean。
  • services.xml-服务层实现。这些通常是我使用AOP向其应用事务性的bean。取决于persistence.xmlbean。
  • controllers.xml-我的Spring MVC控制器。取决于services.xmlbean。
  • views.xml-我的视图实现。

这份清单既不完美也不详尽,但我希望它能说明这一点。选择最适合命名策略和粒度。

以我的(有限的)经验,我已经看到这种方法具有以下好处:

更清晰的架构

明确命名的上下文文件为那些不熟悉项目结构的人提供了合理的选择
开始寻找bean定义的地方。可以使检测循环/不必要的依赖关系变得容易一些。

帮助域名设计

如果我们想添加一个bean定义,但是它不能很好地适合任何上下文文件,那么也许有一个新概念或者新的关注点出现了?例子:

  • 假设我们要使服务层与AOP进行事务处理。我们是将这些bean定义添加到" services.xml"中,还是将其放入自己的" transactionPolicy.xml"中?与团队讨论。交易政策应该可插拔吗?
  • 将Acegi / Spring Security Bean添加到" controllers.xml"文件中,还是创建" security.xml"上下文文件?我们对不同的部署/环境有不同的安全要求吗?

整合测试

我们可以连接应用程序的一个子集以进行集成测试(例如:鉴于上述文件,要测试数据库,我们只需创建" datasource.xml"和" persistence.xml" bean)。

具体来说,我们可以这样注释集成测试类:

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })

与Spring IDE的Beans Graph配合良好

拥有大量集中且名称明确的上下文文件,可以轻松创建自定义BeansConfigSet,以使用Spring IDE的Beans Graph可视化应用程序的各个层。在此之前,我已经使用过此功能为新团队成员提供了我们应用程序组织的高级概述。

回答

" ...我们立即使用了哪种技术:AOP,复杂的Hibernate ..."我想说的一个更好的问题是,请问人们没有立即使用什么。我会将我们引用的示例添加到该列表中。

Spring MVC和JDBC模板将是我的入门建议。仅此而已,我们就可以走很长一段路。

我的建议是忠实遵循Spring架构建议。使用他们的分层想法。确保Web层与其余层完全可分离。通过让Web层仅通过服务层与后端交互来实现此目的。

如果我们想重用该服务层,一个很好的建议是使用Spring"首先合同" Web服务来公开它。如果从来回传递的XML消息开始,则客户端和服务器可以完全分离。

具有最佳Spring支持的IDE是IntelliJ。值得花几美元。

回答

随着Spring 2.5和3.0的发布,我认为现在最重要的最佳实践之一就是Spring注释。控制器,服务和存储库的批注可以为我们节省大量时间,使我们可以专注于应用程序的业务逻辑,并且有可能使所有对象变成纯Java旧对象(PO​​JO)。

回答

首先,Spring是关于模块化的,如果人们专注于编写能够完成一件事并做得很好的小型组件,那么它的工作效果最佳。

如果我们通常遵循最佳做法,例如:

  • 定义接口而不是抽象类
  • 使类型不可变
  • 对于单个类,请保持尽可能少的依赖关系。
  • 每个班级应该做一件事,并且做好。大型的整体类很烂,它们很难测试并且很难使用。

如果组件很小,并且遵循上面的教条,那么它们应该很容易接线并与其他东西玩耍。以上几点自然也适用于Spring框架本身。

聚苯乙烯

不要听以上几点,他们正在谈论如何做任何事情。学习如何思考比做某事更重要。人类会思考,重复某件事并不聪明,思考才是。