我是一名 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/