首先说一下这篇文章的目的是想就最近新发布的Spring Roo再谈一下Java语言的领域模型开发,只是发表我对Roo尝试的第一感觉,欢迎大家讨论。
昨天实践了一下Spring Roo,给我的感受不亚于两年前第一次实践Rails的快感。但在网上及论坛上搜了一下对Spring Roo的分析,发现文章不是很多(可能Roo发布时间还不很长)、评价也不是很高,有说Roo只不过是剥离了Groovy的Grails。但就我个人感觉,首先Roo是基于Java语言的(正如Rails基于Ruby和Grails基于Groovy语言一样),但Java特性远不如动态语言Ruby和Groovy灵活。缘于Java是目前企业应用开发的第一语言,多数有着广泛Java基础的公司弃Java选Ruby或Groovy是比较困难的,Hibernate+Spring则在近些年成为企业开发的主流。但是对于基于Spring框架的贫血模型经常被大家所诟病,而就我个人的经验,最近一个基于Spring+Hibernate的项目也让我开始厌恶这种贫血的Service+Dao开发模式。
看了一年前关于Java充血模型的困难,主要难点就是Java语言无法做到像Ruby的mixin和C#的partial等语言特性,另外当时Spring的AspectJ织入还不够强大。但是如今Roo发布以后却让我感觉SpringSource在这方面已经做得非常好了,首先能像rails和grails的代码生成(Tab提示则更为智能)、基于Annotation和AspectJ编译时的织入,很好的将ActiveRecord模式的引入到POJO中(但属于不同编译单元,POJO除了多几个Annotation就只剩field了,连setter/getter也可以通过Annotation在编译时织入),这样很容易使得Entity更加关心属于自身的业务逻辑,因此Service层不再是必要的(需要事物/安全边界或其它目的时选用),DAO层则根本不再建议使用了。
顺便比较一下去年了解的Seams,Seams也是Gavin King大牛的另一大作,但是因其前端标配JSF等因素使得它并没想Hibernate那样流行。虽说Seams在基于JEE标准上使得Java的领域模型做的非常好了,但是它仍旧延续EJB的开发模式,让业务逻辑封装在Session Bean中,而数据则仍然是Entity的主要责任,所以说感觉并不是一个真实的充血模型。
回到Spring Roo,虽然Roo功能目前还不很强大,比如还不能根据配置的数据库链接直接从数据库表来生成Entity,以及前端表示层使用JSP和绑定Spring MVC(基于Spring 3.0支持REST)等,但是这些改进目标已经纳入其roadmap中,毕竟Roo才发布两三个版本,因此个人还是比较看好它的:)
分享到:
相关推荐
Spring Roo是一个轻量级的Java开发工具,用于快速搭建Spring应用。它采用了一种新的方式来开发Spring应用程序,即通过命令行而非传统的集成开发环境(IDE)。Spring Roo提供了一系列命令,使得开发者可以轻松地创建...
### Spring Roo 使用文档知识点概述 #### 一、Spring Roo 简介 - **Spring Roo** 是一个基于命令行的工具,旨在简化 Spring 应用程序的开发过程。 - **功能定位**:它通过提供一系列预定义的命令来加速应用程序的...
ROO还可以自动生成领域模型类、数据访问对象(DAO)、服务层接口和实现,甚至包括JPA实体的元数据。这极大地减少了手动编写这些基础代码的时间。 Spring ROO支持多种技术栈,如Spring MVC、Spring Web Flow、Spring...
Spring Roo 是一个基于 Java 的开源工具,它简化了 Spring 应用程序的构建过程,通过自动化任务和代码生成,让开发者能够快速地搭建起可扩展的、基于最佳实践的项目结构。 **Spring Roo 的核心特点** 1. **代码生成...
Spring Roo是一个用于快速开发Java应用程序的框架,它结合了Spring生态系统的强大功能,尤其是对Spring MVC、Spring Security、Spring Tiles、Spring Web Flow以及Spring测试支持等方面。 Spring Roo利用了一种...
Spring Roo是Spring框架家族中的一个创新工具,旨在简化Java应用程序的开发过程,特别是企业级应用。它基于Spring的模块化架构,提供了一种快速开发、自动化代码生成和最佳实践集成的解决方案。Spring Roo 1.1.3是该...
Spring Roo是Spring框架的一部分,它提供了一种快速开发工具,帮助开发者在Java应用中创建和管理代码。Roo通过自动化过程,简化了常见的开发任务,如设置项目结构、创建实体类、生成数据库表映射以及创建CRUD操作。...
通过定义领域模型,SpringRoo 能够自动生成相应的数据库表结构、实体类、数据访问对象(DAO)以及相关的业务逻辑代码。以下是领域模型的一些关键要素: - **实体类**:代表应用程序中的业务对象,通常与数据库表相...
3. 生成代码:SpringRoo支持自动生成领域模型类、DAO、Service和Controller代码。只需指定实体类的属性,Roo会自动完成相关的数据库映射和CRUD操作代码。 4. 测试支持:SpringRoo提供测试驱动开发的支持,可以生成...
Spring Roo是Spring框架家族中的一个工具,用于加速Java开发,特别是企业级应用的构建。它通过命令行界面或集成开发环境(IDE)插件提供了一种快速开发的方式,可以帮助开发者生成代码、设置依赖和配置,使得开发...
总结来说,Spring Roo 1.3.2是Spring框架下的一款强大的开发工具,旨在通过自动化和代码生成加速Java应用的开发流程,同时保持与Spring生态系统的紧密集成,让开发者能更专注于业务逻辑的实现,而非基础设施的搭建。
Spring Roo支持多种技术,如JPA(Java Persistence API)用于对象关系映射,Hibernate作为JPA实现,以及Thymeleaf或FreeMarker用于视图层模板。 在2.0.0.RC1版本中,我们可以期待以下一些关键更新和改进: 1. **...
Spring Roo是Spring框架家族中的一个开发工具,它旨在加速Java应用程序的开发过程,特别是通过提供命令行接口和集成开发环境(IDE)插件来简化常见的编程任务。标题"spring-roo-1.1.5.RELEASE"指的是Spring Roo的一...
- **标准Java实践:** SpringRoo遵循Java的最佳实践,这意味着生成的应用程序符合行业标准。 - **易于学习和使用:** SpringRoo的设计考虑了易用性,即使是初学者也能很快上手。 - **无工程妥协:** 使用SpringRoo并...
Spring Roo是Spring Framework的一个附加工具,它为Java开发者提供了一个快速开发平台,旨在简化和加速应用程序的构建过程。"spring-roo-1.1.0.M1.zip_54587.m1_M1 ssh_Spring Roo download_spri"这个标题暗示了这是...
Spring Roo凭借其高效的开发模式、灵活的技术整合以及易学易用的特点,成为了现代Java开发领域的一股强劲力量。随着技术的不断演进,Spring Roo也在持续迭代更新,以适应更多元化和复杂的开发需求。对于追求高效开发...
【os-springroo2-sample_code】项目是...总的来说,【os-springroo2-sample_code】项目是一个宝贵的教育资源,适合想要深入了解和使用Spring Roo 2的开发者,他们可以通过此项目快速掌握基于Spring Roo的Java应用开发。
Vaadin和Spring Roo是两个强大的Java开发框架,它们在创建高效、用户友好的Web应用程序方面发挥着重要作用。这个"vaadin-springRoo可运行的例子"是一个整合了这两个框架的实际项目,提供了完整的war包和源代码,使得...
为了实现这一目标,Roo 采用了一系列流行、可靠和成熟的库,包括但不限于 Spring 框架、Java 持久化 API、JavaServer Pages (JSP)、Spring Security、Spring Web Flow、Log4J 和 Maven。 #### 二、Spring Roo 的...