开发者社区> 异步社区> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《Spring 3.0就这么简单》——1.3 环境准备

简介: 配置了主工程模块 chapter 及第 1 章子模块chapter1 的模块信息之后,单击 IDEA 工程右边的Maven Projects 选项卡,弹出Maven项目的管理窗口。IDEA提供了非常友好的Maven项目管理界面,如图 1-9 所示,单击管理窗口中的刷新按钮,可以列出当前所有的Maven模块。
+关注继续查看

本节书摘来自异步社区《Spring 3.0就这么简单》一书中的第1章,第1.3节,作者: 陈雄华 , 林开雄著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.3 环境准备

1.3.1 创建库表
(1)启动MySQL数据库后,用DOS命令窗口登录数据库。

mysql>mysql –uroot –p1234 --port 3309
分别指定用户名和密码,MySQL默认运行在3306端口,如果不是运行在默认端口,需要通过--port参数指定端口号。

(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命令运行脚本。
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所示。

screenshot

图1-4 创建工程

screenshot

图1-5 设置Maven工程

screenshot

图1-6 创建Maven Module
screenshot

图1-7 配置Module

screenshot

图1-8 Maven工程目录结构

创建项目工程后,修改主工程模块的pom.xml文件,设置主工程模块标识、子模块公共依赖库等信息(关于pom.xm详细配置将在第9章中介绍),作为所有子模块父模块,如代码清单1-1所示。

代码清单1-1 主工程模块pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                http://maven.apache.org/xsd/maven-4.0.0.xsd">
           <modelVersion>4.0.0</modelVersion>
           <groupId>com.smart</groupId>
           <artifactId>chapter</artifactId>
           <packaging>pom</packaging>
           <version>3.1-SNAPSHOT</version>
           <name>Spring3.1</name>
           <description>Spring3.1</description>
           <properties>
                <file.encoding>UTF-8</file.encoding>
                <java.version>1.6</java.version>
<org.springframework.version>3.1.1.RELEASE</org.springframework.version>*
<mysql.version>5.1.6</mysql.version>**
…
           </properties>
           <modules>
                <module>chapter1</module>
           </modules>
</project>

配置了chapter主工程模块pom.xml之后,就开始配置在第1章模块chapter1中生成的pom.xml文件中配置项目工程中需要的依赖相关类库,如代码清单1-2所示。

代码清单1-2 chapter1模块pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ xsd/maven-4.0.0.xsd">
    <parent>
         <groupId>actionspring</groupId>
         <artifactId>chapter </artifactId>
         <version>3.1-SNAPSHOT</version>
     </parent> <!--引用父模块 -->
     <modelVersion>4.0.0</modelVersion>
     <artifactId>chapter1</artifactId>
     <version>3.1-SNAPSHOT</version>
     <name>第一章示例</name>
     <description>Spring 快速入门</description>
     <packaging>war</packaging>
     <dependencies>
<!--依赖的Spring模块类库 -->
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-beans</artifactId>
               <version> ${org.springframework.version} </version>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-jdbc</artifactId>
               <version>${org.springframework.version}</version>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-web</artifactId>
               <version> ${org.springframework.version}</version>
          </dependency>
          <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>${org.springframework.version}</version>
          </dependency>
<!-- 依赖的持久化类库-->
          <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
              <version>${mysql.version}</version>
          </dependency>
<!--依赖的公共模块类库-->
          <dependency>
               <groupId>commons-dbcp</groupId>
               <artifactId>commons-dbcp</artifactId>
               <version>${commons-dbcp.version}</version>
          </dependency>
          <dependency>
               <groupId>org.aspectj</groupId>
               <artifactId>aspectjweaver</artifactId>
               <version>${aspectjweaver.version}</version>
          </dependency>
          <dependency>
               <groupId>org.apache.commons</groupId>
               <artifactId>com.springsource.org.apache.commons.logging</artifactId>
               <version>${apache.commons.version}</version>
          </dependency>
          <dependency>
               <groupId>fakepath</groupId>
               <artifactId>com.springsource.net.sf.cglib</artifactId>
               <version>1.1.3</version>
          </dependency>
<!--依赖的Web模块类库-->
          <dependency>
               <groupId>javax.servlet.jsp</groupId>
               <artifactId>jsp-api</artifactId>
               <version>${jsp-api.version}</version>
               <scope>provided</scope>
          </dependency>
          <dependency>
               <groupId>taglibs</groupId>
               <artifactId>standard</artifactId>
               <version>${standard.version}</version>
               <scope>runtime</scope>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>servlet-api</artifactId>
               <version>${servlet-api.version}</version>
          </dependency>
          <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>jstl</artifactId>
               <version>${jstl.version}</version>
          </dependency>
      </dependencies>
</project>

配置了主工程模块 chapter 及第 1 章子模块chapter1 的模块信息之后,单击 IDEA 工程右边的Maven Projects 选项卡,弹出Maven项目的管理窗口。IDEA提供了非常友好的Maven项目管理界面,如图 1-9 所示,单击管理窗口中的刷新按钮,可以列出当前所有的Maven模块。每个模块都包含两个子节点Lifecycle及Dependencies,其中Lifecycle子节点下提供常用的Maven操作命令,如清理、验证、编译、测试、打包、部署等,Dependencies子节点列出当前模块所有依赖的类库。

screenshot

图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等。对于由若干独立的子系统组成的大型应用,在业务分层包的前面一般还需要加上子系统的前缀。包的规划对于大型的应用特别重要,它直接关系到应用部署和分发的方便性。

screenshot

图1-10 主程序包的规划

screenshot

图1-11 测试包的规划

Spring配置文件规划
Spring可以将所有的配置信息统一到一个文件中,也可以放置到多个文件中。对于简单的应用来说,由于配置信息少,仅用一个配置文件就足以应付。随着应用规模的扩大,配置信息量的增多,仅仅使用一个配置文件往往难以满足要求,如果不进行仔细规划,就会给配置信息的查看和团队协作带来负面影响。

配置文件在团队协作时是资源争用的焦点,对于大型的应用一般要按模块进行划分,以在一定程度上降低争用,减少团队协作的版本控制冲突。因此,应用比较小时,直接采用一个applicationContext.xml配置文件即可。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring框架的介绍、工厂设计模式以及Spring环境的搭建
Spring框架的介绍、工厂设计模式以及Spring环境的搭建
0 0
具备spring环境的测试头注解;xml 规则;JavaScript:改变 HTML 内容案例
具备spring环境的测试头注解 具备spring环境的测试头注解 test
0 0
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch3.x环境
spring-data系列为众多中间件、数据库的操作提供了极其方便的API,对于elasticsearch也不例外,spring-data-elasticsearch不仅为我们提供了现成的CRUD接口,也提供了简便的各类java client的整合方案 所以今天我们就来讲解,如果在springboot项目中整合spring-data-elasticsearch
0 0
spring data elasticsearch:从零搭建springboot整合spring data elasticsearch4.2.x环境
我们之间讲解了[springboot整合spring data elasticsearch3.x](https://blog.csdn.net/qq_24950043/article/details/125570709)。但elasticsearch的更新十分活跃,截止目前已经到了8.x版本。而spring data elasticsearch3.x所对应的es版本还是6.8.x 所以今天我们来讲解与spring-data-elasticsearch3.x有较大变化的spring data elasticsearch4.2.x版本如何整合到springboot
0 0
Spring源码阅读 之 搭建源码阅读环境(IDEA)
Spring源码阅读 之 搭建源码阅读环境(IDEA)
0 0
【Spring 从0开始】AOP 操作中的相关术语、环境准备
【Spring 从0开始】AOP 操作中的相关术语、环境准备
0 0
spring之源码环境构建
今天带大家用最简单和轻量级的方式构建spirng源码!作为一名,不想只成为增删改查的boy而言,阅读spirng源码就是面前的一座大山,阅读源码,首先要从构建源码开始,要不然是不能加注释的。
0 0
Spring集成Web环境
Spring集成Web环境
0 0
Spring Security系列教程25--解决Spring Security环境中的跨域问题
前言 上一章节中,一一哥 给各位讲解了同源策略和跨域问题,以及跨域问题的解决方案,在本篇文章中,我会带大家进行代码实现,看看在Spring Security环境中如何解决跨域问题。 一. 启用Spring Security 的CORS支持 1. 创建web接口 我先在SpringBoot环境中,创建一个端口号为8080的web项目,注意这个web项目没有引入Spring Security的依赖包。然后在其中创建一个IndexController,定义两个测试接口以便被ajax进行跨域访问。 @RestController public class IndexController {
0 0
Spring Security系列教程24--Spring Security环境中存在的跨域问题
前言 在前后端不分离时,我们利用前面讲过的Spring Security的各种知识点,就可以实现对项目的权限管控。但是在前后端分离时,尤其是在引入了Spring Security后的前后端分离时,我们从前端发来的请求,就会存在一些问题。这些问题就是跨域而导致的问题! 对于前后端分离时,跨域而产生的安全问题,我们该怎么解决呢?接下来请跟着 一一哥 来学习如何解决吧! 在解决跨域问题之前,我们先来了解一下何为跨域问题,怎么产生的跨域问题,怎么解决这个跨域问题。 一. 跨域问题的由来 1. 同源策略 跨域问题的产生,源自浏览器的一个同源策略。 1.1 同源策略的概念 同源策略是由 Netscap
0 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
电商网站需求分析和架构设计Spring Boot2.6入门
立即下载
云上Docker的Spring Cloud微服务应用实践分享
立即下载
Spring Boot 2.6.0电商网站开发实战
立即下载