本文共 7241 字,大约阅读时间需要 24 分钟。
本节书摘来自异步社区《Spring 3.0就这么简单》一书中的第1章,第1.3节,作者: 陈雄华 , 林开雄著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.3.1 创建库表
(1)启动MySQL数据库后,用DOS命令窗口登录数据库。mysql>mysql –uroot –p1234 --port 3309
(2)运行以下脚本,创建实例对应的数据库。
mysql>DROP DATABASE IF EXISTS sampledb;mysql>CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;mysql>USE sampledb;
数据库名为sampledb,默认字符集采用UTF-8。
(3)创建实例所用的两张表。
##创建用户表mysql>CREATE TABLE t_user ( user_id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(30), password VARCHAR(32), last_visit datetime, last_ip VARCHAR(23))ENGINE=InnoDB; ##创建用户登录日志表mysql>CREATE TABLE t_login_log ( login_log_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, ip VARCHAR(23), login_datetime datetime)ENGINE=InnoDB;
t_user表为用户信息表,t_login_log为用户登录日志表。其中ENGINE=InnoDB指定表的引擎为InnoDB类型,该类型表支持事务。MySQL默认采用MyISAM引擎,该类型表不支持事务,仅存储数据,优点在于读写很快。对于景区网站型应用系统的表来说,大可使用不支持事务的MyISAM引擎,但本书出于演示事务的目的,所有表均采用支持事务的InnoDB引擎。
(4)初始化一条数据,用户名/密码为admin/123456。
##插入初始化数据mysql>INSERT INTO t_user (user_name,password) VALUES('admin','123456');mysql>COMMIT;
用户也可以直接运行脚本文件来完成以上所有工作,创建数据库表的脚本文件位于chapter1/src/main/schema/sampledb.sql,下面提供了两种运行脚本的方法。
直接通过mysql命令运行。
假设从github.com下载本书示例代码中的内容并复制到D:actionSpring目录下,则在DOS命令窗口中运行以下命令。D:\> mysql -u root -p1234 --port 3309 <D:\actionSpring\chapter1\schema\sampledb.sql
mysql>source D:\actionSpring\chapter1\src\main\schema\sampledb.sql
1.3.2 建立工程
考虑到IntelliJ IDEA 是一款非常优秀且强大的IDE工具,特别是对Maven等工具提供了良好支持,越来越受企业开发人员的喜爱。本书的所有示例都采用IDEA(11.0版本)进行开发。将IDEA的工作空间设置于D:actionSpring,为了避免因路径不一致而引起的各种问题,请尽量保证工作空间和本书的路径一致。示例工程源文件和配置文件都使用UTF-8编码格式,UTF-8可以很好地解决国际化问题,同时避免不受欢迎的中文乱码问题,用户可以执行File→Settings→File Encodings命令将IDEA的工作空间编码格式设置为UTF-8编码格式。在D:actionSpring中建立一个名为chapter的Maven主工程项目,如图1-4所示。
设置项目名称为chapter,项目路径为D:actionSpringchapter,并选择项目类型为Maven Module,单击Next按钮,进入Maven工程设置窗口,如图1-5所示。
设置Maven的GroupId为com.smart,ArtifactId为chapter,Version版本号为3.1-SNAPSHOT之后,单击Finish按钮完成主工程的创建,之后所有章节的代码示例将在这个主工程上以模块的方式进行创建。接下来,就可以创建本章示例的模块chapter1,可以通过File→New Module→Add Module对话框来实现,如图1-6所示。
选择Create module from scratch选项,并单击Next按钮进入模块设置窗口,如图1-7所示。
设置模块的名称为chapter1,选择类型为Maven Module,其他保持默认值即可,单击Next按钮,完成模块创建。后面所有章节的示例代码都将以Maven模块的方式进行创建,如第2章,模块的名称为chapter2,其他章节依次类推。创建之后工程模块的目录结构如图1-8所示。
图1-4 创建工程
图1-5 设置Maven工程
图1-6 创建Maven Module
图1-7 配置Module
图1-8 Maven工程目录结构
创建项目工程后,修改主工程模块的pom.xml文件,设置主工程模块标识、子模块公共依赖库等信息(关于pom.xm详细配置将在第9章中介绍),作为所有子模块父模块,如代码清单1-1所示。
代码清单1-1 主工程模块pom.xml
4.0.0 com.smart chapter pom 3.1-SNAPSHOT Spring3.1 Spring3.1 UTF-8 1.6 3.1.1.RELEASE *5.1.6 **…chapter1
配置了chapter主工程模块pom.xml之后,就开始配置在第1章模块chapter1中生成的pom.xml文件中配置项目工程中需要的依赖相关类库,如代码清单1-2所示。
代码清单1-2 chapter1模块pom.xml
actionspring chapter 3.1-SNAPSHOT 4.0.0 chapter1 3.1-SNAPSHOT 第一章示例 Spring 快速入门 war org.springframework spring-beans ${org.springframework.version} org.springframework spring-jdbc ${org.springframework.version} org.springframework spring-web ${org.springframework.version} org.springframework spring-webmvc ${org.springframework.version} mysql mysql-connector-java ${mysql.version} commons-dbcp commons-dbcp ${commons-dbcp.version} org.aspectj aspectjweaver ${aspectjweaver.version} org.apache.commons com.springsource.org.apache.commons.logging ${apache.commons.version} fakepath com.springsource.net.sf.cglib 1.1.3 javax.servlet.jsp jsp-api ${jsp-api.version} provided taglibs standard ${standard.version} runtime javax.servlet servlet-api ${servlet-api.version} javax.servlet jstl ${jstl.version}
配置了主工程模块 chapter 及第 1 章子模块chapter1 的模块信息之后,单击 IDEA 工程右边的Maven Projects 选项卡,弹出Maven项目的管理窗口。IDEA提供了非常友好的Maven项目管理界面,如图 1-9 所示,单击管理窗口中的刷新按钮,可以列出当前所有的Maven模块。每个模块都包含两个子节点Lifecycle及Dependencies,其中Lifecycle子节点下提供常用的Maven操作命令,如清理、验证、编译、测试、打包、部署等,Dependencies子节点列出当前模块所有依赖的类库。
图1-9 Maven项目的管理界面
1.3.3 类包及Spring配置文件规划
类包规划类包以分层的方式进行组织,共划分为4个包,分别是dao、domain、service和web。领域对象从严格意义上讲属于业务层,但由于领域对象可能还同时被持久层和展现层共享,所以一般将其单独划分到一个包中,如图1-10所示。单元测试的类包和程序的类包对应,但放置在不同的文件夹下,如图1-11所示。本实例仅对业务层的业务类进行单元测试。将程序类和测试类放置在物理不同的文件夹下,方便将来程序的打包和分发,因为测试类仅在开发时有用,无须包含到部署包中。在本章的后续内容中,读者将会看到如何用Maven工具进行程序打包,体会这种包及目录的设计结构所带来的好处。
实战经验
随着项目规模的增大,这种仅以分层思想规划的包结构马上就会显示出它的不足,一般情况下需要在业务模块包下,进一步按分层模块划分子包,如user/dao、user/service、viewspace/dao、viewspace/service等。对于由若干独立的子系统组成的大型应用,在业务分层包的前面一般还需要加上子系统的前缀。包的规划对于大型的应用特别重要,它直接关系到应用部署和分发的方便性。
图1-10 主程序包的规划
图1-11 测试包的规划
Spring配置文件规划
Spring可以将所有的配置信息统一到一个文件中,也可以放置到多个文件中。对于简单的应用来说,由于配置信息少,仅用一个配置文件就足以应付。随着应用规模的扩大,配置信息量的增多,仅仅使用一个配置文件往往难以满足要求,如果不进行仔细规划,就会给配置信息的查看和团队协作带来负面影响。配置文件在团队协作时是资源争用的焦点,对于大型的应用一般要按模块进行划分,以在一定程度上降低争用,减少团队协作的版本控制冲突。因此,应用比较小时,直接采用一个applicationContext.xml配置文件即可。
转载地址:http://cbmia.baihongyu.com/