java - 如何设计和构建 Java/Java EE Web 应用程序?

标签 java architecture jakarta-ee

我是一名 Java 开发人员,在 Struts、Spring 和 Hibernate 方面拥有近 5 年的经验。

几天后我们有一个新项目即将推出。我们有完整的需求,我们将使用 Spring MVC、Spring 和 Hibernate 来完成这个项目。

我被要求设计和架构整个 Web 应用程序。设计和创建建筑师是我迄今为止在我的职业生涯中从未做过的事情。而且我不知道该怎么做,从哪里开始,使用什么工具等等。我什至不知道设计和建筑的 A、B、C。

您可能想知道为什么我什至一开始就被要求这样做。问题是我有机会这样做,在每个阶段我都会受到监控,我会让我的上级审查设计。

欢迎任何建议、想法和步骤来开始和继续。

最佳答案

我可以根据我自己的经验添加我的 2 美分(虽然它更多是对开发最佳实践的汇编,但您可能会发现在设计应用程序时牢记它们很有用):

  • 没有万能的设计
  • 尽量保持应用程序的重量轻。
  • 使用 Maven/Gradle 管理依赖项
    • 不要过度依赖 IDE。确保您的项目在没有 IDE 的情况下构建(如果您使用的是 maven/gradle,它将:) 尝试使用 IDEA、Netbeans 和 Eclipse 打开您的项目。
  • 对于上述技术,appfuse 是一个很好的起点。
  • 首先设计您的数据库/实体
  • 明智而明智地使用图书馆。不要过度使用它们。
  • 别忘了写 JUnit/TestNG(至少服务层)
  • 在所有主流浏览器上测试应用程序(不仅仅是您最喜欢的浏览器 :)
  • 确定您的网络应用将拥有多少总用户和多少并发用户。
    • 然后决定是否需要缓存。
    • 您是否会使用应用服务器集群。
  • 根据其功能选择应用服务器,更重要的是“您的需求”
    • Tomcat/Jetty 在大多数情况下都很好
  • 避免使用任何应用服务器特定的 api
  • 即使使用 hibernate 作为 JPA 实现,也要使用 JPA 接口(interface)/注解
  • 在实体中映射关系时要格外小心。决定哪些属性和关系会延迟加载,哪些会急切地加载
  • 在设计应用时请牢记应用安全。 Spring 安全性是绝佳的选择。
  • 永远不要滥用 HttpSession。不要在里面储存太多。
  • 保持实体可序列化。强制开发者使用 toString()、hashCode() 和 equals()
  • 别忘了从第一天开始就使用版本控制
  • 不要只是假设 spring/hibernate/spring-mvc 将是您的最佳选择。使用至少 3 到 4 个选项创建小型概念证明。
  • 尝试使用 Jenkins 等 CI 工具自动化集成/构建/部署
  • 检查和调整 Hibernate 生成的 SQL(不时)
  • 不要让业务逻辑潜入 View 层。讨厌 jsp 脚本?考虑 Velocity/Freemarker。 JSP 不是唯一的选择。
  • 使用 Spring 的 PropertyPlaceholderConfigurator 外部化特定于环境的配置。
  • 如果可能,请尝试与现有的用户身份验证机制(如 LDAP/OpenID)集成,而不是自己编写。这将使您免于重新发明轮子,并使您的用户免于记住另一组用户名和密码。

关于java - 如何设计和构建 Java/Java EE Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739099/

相关文章:

Java GC 概念 : CMSInitiatingOccupancyFraction

program-entry-point - Java Main 方法在源代码中定义在哪里?

testing - 测试自动化架构

android - 如何从手机通讯录中查找注册用户

html - 全局 CSS 辅助类是个好主意吗?

java - 带分页的数据表中的 Wicket 复选框

java - 从 Spring 上下文中提取启动错误

java - 有没有办法在 RabbitMQ 队列、交换、绑定(bind)等上执行 "migration"操作?

java - 在处理中的类中使用 controlp5 小部件

java.lang.Exception : WEB0113