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

千里之行,始于足下。结合例子学习概念,比较靠谱。本文介绍如何开始从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.code
haus.mojo:appfuse-maven-plugin:2.0.2:full-source failed: A required class was mi
ssing 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:compil
e (default) on project my-project-domain: The artifact org.springframework:sprin
g-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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值