`
zhaoshg
  • 浏览: 253361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AppFuse 2.0研究(一)

阅读更多
新版本的AppFuse虽然实现的功能没有变,但实现方式的变化还是挺大的。

接下来让我们随着AppFuse的引导,一起学习最新的技术吧。


想要了解AppFuse的基本功能,我觉得最快的方法还是亲自做一做。以前的AppFuse有提供CRUD代码的自动生成功能,新版当然也不例外。

借用AppFuse网站中的例子,建立一个最简单的POJO。

import javax.persistence.Entity;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.GeneratedValue;

import javax.persistence.Column;

import org.apache.commons.lang.builder.EqualsBuilder;

import org.apache.commons.lang.builder.HashCodeBuilder;

import org.apache.commons.lang.builder.ToStringBuilder;

 

@Entity

public class Person extends BaseObject {

       

       private static final long serialVersionUID = -2267205427831321488L;

       private Long id;

       private String firstName;

       private String lastName;

       

       @Id @GeneratedValue(strategy = GenerationType.AUTO)

       public Long getId() {

              return id;

       }

 

       public void setId(Long id) {

              this.id = id;

       }

       

       @Column(name="first_name", length=50)

       public String getFirstName() {

              return firstName;

       }

 

       public void setFirstName(String firstName) {

              this.firstName = firstName;

       }

 

       @Column(name="last_name", length=50)

       public String getLastName() {

              return lastName;

       }

 

       public void setLastName(String lastName) {

              this.lastName = lastName;

       }

 

       /**

        * @see java.lang.Object#equals(Object)

        */

       public boolean equals(Object object) {

              if (!(object instanceof Person)) {

                     return false;

              }

              Person rhs = (Person) object;

              return new EqualsBuilder().append(this.firstName, rhs.firstName)

                            .append(this.id, rhs.id).append(this.lastName, rhs.lastName)

                            .isEquals();

       }

 

       /**

        * @see java.lang.Object#hashCode()

        */

       public int hashCode() {

              return new HashCodeBuilder(248915313, 1539783955)

                            .append(this.firstName).append(this.id).append(this.lastName)

                            .toHashCode();

       }

 

       /**

        * @see java.lang.Object#toString()

        */

       public String toString() {

              return new ToStringBuilder(this).append("lastName", this.lastName)

                            .append("id", this.id).append("firstName", this.firstName)

                            .toString();

       }

}


接下来根据这个POJO生成CRUD代码。

在命令行下运行mvn appfuse:gen -Dentity=Person,这个POJO的CRUD代码即被生成,并自动添加到项目中。



接下来根据这个POJO生成数据表。
在命令行下运行mvn test-compile hibernate3:hbm2ddl。

然后找到\src\test\resources下的hibernate.cfg.xml文件,添加<mapping class="com.mycompany.app.model.Person"/>

最后运行mvn jetty:run-war,可以通过http://localhost:8080看到我们新添加的person了。

在\target\appfuse\generated-sources里有所有Person的自动生成的代码,通过查看这些文件,我们可以了解到AppFuse里实现一张表的CRUD需要多少个文件。熟悉AppFuse1.x的人也可以比较一下两个版本实现方式的区别。



下面就是\target\appfuse\generated-sources里的所有文件,我们来研究一下。

src\test\resources\Person-sample-data.xml 可以配置初始数据的文件,添加到sample-data.xml

src\test\resources\Person-web-tests.xml jsp的单元测试配置文件

src\test\java\com\mycompany\app\webapp\action\PersonActionTest.java Action的单元测试文件

src\main\resources\Person-generic-beans.xml 添加到applicationContext.xml

src\main\resources\PersonManager-bean.xml 无用

src\main\resources\Person-struts.xml 添加到src\main\resources\struts.xml中

src\main\resources\Person-ApplicationResources.properties 资源文件,添加到src\main\resources\ApplicationResources.properties

src\main\resources\com\mycompany\app\model\Person-validation.xml这个在1.x里是自动生成的,现在需要自己去改。

src\main\resources\com\mycompany\app\webapp\action\PersonAction-validation.xml Action的validation

src\main\java\com\mycompany\app\webapp\action\PersonAction.java Ation

src\main\webapp\WEB-INF\Person-struts-bean.xml 可以添加到applicationContext-struts.xml中,也可以不添加,区别就是struts.xml中Action的声明方式有点变化。

src\main\webapp\WEB-INF\Person-menu-config.xml 用于配置菜单项,添加到src\main\webapp\WEB-INF\menu-config.xml 菜单配置文件

src\main\webapp\common\Person-menu.jsp 菜单显示jsp
分享到:
评论

相关推荐

    AppFuse 2.0 RC1 Documentation

    AppFuse 2.0 RC1 Documentation

    appfuse 2.0 教程

    appfuse 2.0 教程,不可多得的教程。包括代码生成,环境配置。

    appfuse2.0种mysql 数据库

    使用appfuse2 的时候,需要连接mysql数据,数据库建表的sql语言。

    APPFUSE2.0中加入FCKeditor

    NULL 博文链接:https://lionsadness.iteye.com/blog/750784

    appfuse

    使用appfuse2.0,下载过来的实例源码,没有jar包

    appfuse新手上路

    新手使用appfuse2.0,启动步骤和配置过程

    AppFuse学习笔记(J2EE入门级框架)

    Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、Struts、xDcolet、Junit、Taperstry、JSF等基础框架给出...AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。

    appfuse 学习笔记

    Appfuse 一个开放源码的项目和应用程序,帮助我们快速而高效的地开发。 Appfuse是Matt Raible 开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、...AppFuse2.0重构了AppFuse1.0,转到Maven2和Jdk1.5。

    APPFUSE工具研究.doc

    Appfuse是一个开源的工程应用,它集成了现在最流行的开发框架到该应用中,使用Maven可以很方便的开发和部署因为。也可以集成到现在流行的开源开发工具如eclipse,idea等。现在让我们简单的看看APPFUSE开发应用的简单...

    appfuse-documentation-2.0

    AppFuse是目前最火热的开源项目,采用如SSH架构等,是优秀的系统开发框架。

    AppFuse项目研究

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持

    AppFuse

    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse...

    基于AppFuse框架的B2C电子商务系统研究与实现

    基于AppFuse框架的B2C电子商务系统研究与实现

    AppFuse入门文档(AppFuse与SpringMVC+mybatis整合)

    本文档详细描述了AppFuse与SpringMVC+mybatis整合的过程,只要你懂一些基本的eclipse操作和基本的maven命令,就可以在三分钟之内迅速的搭建出一个AppFuse的架构

    可直接使用的appfuse项目

    AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...

    appfuse学习笔记(一)安装部署

    NULL 博文链接:https://savagegarden.iteye.com/blog/427169

    Candy for Appfuse-开源

    Candy for AppFuse 是一组插件,旨在让您使用 AppFuse 2.0 的日常工作更加舒适。 它的最终目标是让开发人员忘记所有 maven2 命令,同时支持 Appfuse 最佳实践。

    Appfuse教程Appfuse开发.pdf

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。  AppFuse是一个集成了...

Global site tag (gtag.js) - Google Analytics