千里之行,始于足下。结合例子学习概念,比较靠谱。本文介绍如何开始从appfuse开始学习Spring和Hibernate。
如果你还没有安装mysql,请先安装。同时也建议你安装一个workbench来方便管理数据库。

1. 利用Maven构建appfuse项目
万能的Maven提供了很多丰富的Archetype让你可以轻松构建一个包含了你想使用的框架的基本项目,而避免让你从零开始。你可以在这里([url]http://docs.codehaus.org/display/MAVENUSER/Archetypes+List[/url])查看Maven提供的所有Archetype。
在命令行输入下面的命令,你就可以根据向导生成一个appfuse框架了。

mvn archetype:generate

第一步就是选择Archetype。请输入:

org.appfuse.archetypes:appfuse-basic-spring

下面的步骤很直观,不再赘述。
或者用下面的命令一步搞定:

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=2.1.0 -DgroupId=study.spring -DartifactId=appfuse -DarchetypeRepository=http://oss.sonatype.org/content/repositories/appfuse

2. 利用Eclipse的Maven插件m2eclipse,你可以导入刚刚创建的项目:appfuse。导入过程需要几分钟,maven需要下载一些依赖的lib。

产生的项目里面只有一个类:App,其他的类呢?原来默认生成的项目是嵌入式的,其他的类都作为jar被引入而非源代码。如果你想生成源代码在这个项目里面,可以这样:

mvn appfuse:full-source

你可能会遇到错误:

[ERROR] Failed to execute goal org.codehaus.mojo:appfuse-maven-plugin:2.0.2:full-source (default-cli) on project appfuse: svn: PROPFIND request failed on '/svn/appfuse/tags/APPFUSE_2.0.2/data/common/src'[ERROR] svn: Connection refused: connect

添加:<trunk>https://svn.java.net/svn/appfuse~svn/</trunk>到下面的位置

<configuration>                  <genericCore>${amp.genericCore}</genericCore>                 <fullSource>${amp.fullSource}</fullSource>                    <trunk>https://svn.java.net/svn/appfuse~svn/</trunk>              </configuration>

你可能会遇到错误:

[ERROR] Failed to execute goal org.codehaus.mojo:appfuse-maven-plugin:2.0.2:full-source (default-cli) on project appfuse: Execution default-cli of goal org.codehaus.mojo:appfuse-maven-plugin:2.0.2:full-source failed: A required class was missing while executing org.codehaus.mojo:appfuse-maven-plugin:2.0.2:full-source:org/codehaus/plexus/embed/Embedder

这个是因为不支持maven3,需要用maven2. 成功以后看看你的项目里面会多了很多包和类,这些就是appfuse的源代码了。
事情还没完,LabelTag会有编译错误:

The type org.springframework.core.env.EnvironmentCapable cannot be resolved. It is indirectly referenced from required .class files

这是因为spring版本需要升级,修改为:

<spring.version>3.1.1.RELEASE</spring.version>

3. 运行
输入下面的命令启动这个app:

mvn jetty:run

如果你遇到了这个错误(不知道这个算不算bug):

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (default) on project my-project-domain: The artifact org.springframework:spring-aspects referenced in aspectj plugin as an aspect library, is not found the pr oject dependencies -> [Help 1]

那么你需要添加spring-aspects dependency。(你可以利用maven插件工具查找并添加)

<dependency>         <groupId>org.springframework</groupId>            <artifactId>spring-aspects</artifactId>           <version>3.1.1.RELEASE</version>        </dependency>

再次运行,成功后在浏览器打开[url]http://localhost:8080[/url].

默认有两个用户:admin/admin, user/user

4. 在Eclipse里面运行
配置Maven Build:

[img]http://dl.iteye.com/upload/attachment/0067/6071/a9dc2d08-c0c7-33ee-a0ca-0d5bc5ea6eb6.png[/img]

5. 加入debug和JMX远程监控参数

-server -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=128m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n -Dcom.sun.management.jmxremote.port=9000-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

加入这些JVM参数之后,就可以在eclipse里面debug了。同时可以用JConsole或JVisualVM来监控JVM了。

6. 配置log4j
Eclipse能显示的日志的大小是有限的,所以可以让日志写到文件里面以便分析。修改log4j.xml,添加FileAppender:

<appender name="FILE" class="org.apache.log4j.FileAppender">     <param name="File" value="appfuse.log"/>        <param name="Append" value="false" />        <layout class="org.apache.log4j.PatternLayout">          <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/>        </layout>     </appender>   <root>        <level value="TRACE"/>        <appender-ref ref="CONSOLE"/>        <appender-ref ref="FILE"/>    </root>

修改spring的日志级别为TRACE:

<logger name="org.springframework">        <level value="TRACE"/>    </logger>

这样我们就能在项目根目录下面的appfuse.log里面看到非常详细的日志了。下一步就是要分析这个日志来看看Spring是怎么样工作的。

关于appfuse你可以参考:[url]http://appfuse.org/display/APF/AppFuse+QuickStart[/url]

从appfuse开始学习Spring和Hibernate - (1)构建项目相关推荐

  1. ssh整合mysql不能自动生成表_ssh整合思想 Spring与Hibernate的整合 项目在服务器启动则自动创建数据库表...

    Spring整合Hibernate Spring的Web项目中,web.xml文件会自动加载,以出现欢迎首页.也可以在这个文件中对Spring的配置文件进行监听,自启动配置文件, 以及之前Struts ...

  2. 一步步学习 Spring Data 系列之JPA(一)

    2019独角兽企业重金招聘Python工程师标准>>> 大概有半年多没有写博客了,主要是最近忙于工作,也没来得及与大家分享技术.当然现在的技术大多都有人写其博客分享了,也找不到合适写 ...

  3. 学习Spring Boot

    Spring boot 是什么 ? 简单说, spring boot 是一个构建项目的工具, 一个脚手架. Spring boot 能干什么? spring boot 做非常少的配置就可以构建生产级别 ...

  4. Java新手如何学习Spring、Struts、Hibernate三大框架?

    spring,hibernate,struts 是JavaEE方向企业使用较多的几个框架技术,所以就会很多人想去学习这几个框架,当然这几个框架流行的时间也比较长了,相对资料也会比较多,但是适合新手的并 ...

  5. Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring

    一.Spring介绍 简介 The Spring Framework provides a comprehensive programming and configuration model for ...

  6. 整合Struts2、Spring、Hibernate构建J2EE应用

    [论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...

  7. 2小时学习Spring Boot 2019版本 代码一样推送至github上面去

    简介:<2小时学习Spring Boot>后续进阶课程,主要讲述了Spring Boot针对Web方面的相关技巧 讲师实战课程<Spring Boot微信点餐系统> http: ...

  8. Spring MVC3 Hibernate CRUD示例应用程序

    学习从HelloWorld应用程序开始的任何Web框架都是一个好主意. 一旦我们熟悉了框架配置,最好做一个CRUD(创建,读取,更新,删除)应用程序,该应用程序涵盖Web框架的各个方面,例如验证,请求 ...

  9. Struts2和Spring和Hibernate应用实例

    Struts2.Spring和Hibernate应用实例 Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用.作为最成功的Web框架,Struts自然拥有众多的优点 ...

  10. Spring与Hibernate整合中,使用OpenSessionInViewFilter后出现sessionFactory未注入问题

    近期在知乎看到一句话,保持学习的有一种是你看到了很多其它的牛人,不甘心,真的不甘心. Spring和hibernate整合的时候,jsp页面做展现,发现展现属性出现: org.apache.jaspe ...

最新文章

  1. myflow.js 工作流类扩展
  2. Java Web整合开发(14) -- Struts 1.x 概述
  3. SAP 物料XXXXX的强制帐户设置 (输入帐户设置类别) 的问题解决方法
  4. 正确地kill java历程
  5. matlab显示曲线图中某个点的坐标值
  6. java 高效加减乘除_java简单加减乘除
  7. java OOP及相关基础知识汇总(转)
  8. GIT入门笔记(2)- 典型的工作模式
  9. 郴州大数据产业招商会在深举行,中琛源科技签约智慧水务项目
  10. HDU 1251 - 统计难题(字典树模板题)
  11. POJ 1873 The Fortified Forest
  12. logout退出功能是怎么实现的?login登陆功能室怎么实现的
  13. 反爬虫绕过初级——添加http header和gzip解压处理
  14. python装饰对象_python基础-面向对象(装饰器)
  15. linux免安装mysql_linux上免安装版MySQL5.7.18的教程详解
  16. Swift 3.0 语法
  17. OSCP-Pelican(Exhibitor、gcore提权)
  18. CF/TC 做题计划
  19. 【操作系统】文件系统大作业
  20. NCR Shuffle算法原理

热门文章

  1. 二叉树查找结点及父结点
  2. 【Proteus仿真】基于STC15单片机简易数码管定时器时钟
  3. 高考作文也被AI攻克?B站UP主爆肝100天,开发会写高考作文的AI
  4. 数据库实验一、实验二、实验三、实验四
  5. 5年部队服役结束,退伍后我做了一名码农
  6. 从王者荣耀看设计模式(十六.原型模式)
  7. 周五送码 | MS08067实验室攻防平台
  8. 复旦大学2018--2019学年第二学期(18级)高等代数II期末考试第八大题解答
  9. 单片机语音播报怎么做?语音模块原理及程序编写思路
  10. 一文62页PPT读懂中国供应链金融