说明:
(1)maven高级部分包括:分模块开发与设计(重点)、聚合(重点)、继承(重点)、属性(重点)、版本管理、资源配置、多环境开发配置、跳过测试、私服(重点);
(2)本篇博客的逻辑:【原先的时候,一个项目来了,我们就创建一个工程模块来完成】→【后面,我们会尝试着把这个项目,拆分成多个工程模块】→【比如,这儿我们把一个Spring MVC项目,拆成了pojo,dao,service,controller】→【这儿,我们使用maven来帮助管理项目】→【然后,就可以dao引用service依赖,service引用dao依赖】;
(3)声明:这儿的拆分,仅仅是演示了拆分思想;具体的有关业务上的拆分逻辑,不具有参考价值:
● 我们这儿演示的拆分,是根据Controller、Service、Dao的结构去拆的;而没有按照【在实际分布式项目中,根据如用户模块、商品模块的方式】去拆的;
● 即,我们这儿演示的maven拆分,仅仅是演示了拆分的思想而已;;;只要明白了这个思想,在实际中就可以根据具体的业务去灵活的运用;
(4)本篇博客待深入了解的两点:
● 【ssm_pojo】、【ssm_dao】、【ssm_service】、【ssm_controller】,这四个使用Maven管理的项目,其groupId都是“com.wgy”,【<groupId>com.wgy</groupId>】;;;;而在实际的分布式项目(比如Spring Cloud项目)中,不同模块的groupId的命名方式,待了解;
● 【ssm_controller】中的applicationContext-controller.xml配置文件,加载【ssm_service】和【ssm_dao】工程配置文件的策略;对于如何加载其他工程的配置文件,其机制不是十分清晰;
目录
二:演示项目准备:maven_advanced项目,简介;(PS:这儿的内容过于简单,没必要细看)
(1)为了演示,准备了一个逻辑空间,创建了一一个演示用的User表:
(6)Dao:UserDao,User.xml,mybatis-config.xml;
(7)Service:UserService,UserServiceImpl;
四:根据原项目,拆出【ssm_dao】;(需要使用到【ssm_pojo】)
五:根据原项目,拆出【ssm_service】;(需要使用到【ssm_dao】)
六:根据原项目,拆出【ssm_controller】;(需要使用到【ssm_service】)
3.【ssm_controller】工程,编译一下,看是否OK;
一:模块拆分,简介;
(1)拆分理解(PS:这儿的理解可能存在偏差、甚至是错误):当一个规模比较大的项目来的时候,为了能够更好的组织团队人员、更好的有条理的去开发这个项目,为了更有利项目的扩展和维护;我们往往会,对这个项目进行拆分,拆成多个模块;
● 就我们这儿演示来看,我们拆分出的一个模块和以前接触的项目是一样的;即,每一个模块,都是一个在物理意义上独立的项目;
● 只是,我们把一个大项目,拆成多个模块(也就是多个小项目)后;;;这些模块,都是使用maven管理的;;;然后,我们就可以使用maven,对这些项目进行一些物理上的配置,把这些模块(也就是多个小项目),在逻辑上给组织成为一个大项目;
(2)拆分说明;
● 然后,上图所示的【ssm】可以认为是主模块;主模块中,什么都不放;
● 在后面的【ssm_controller】、【ssm_service】等模块中,开发具体的功能;这些模块通力合作,来完成整个工程;
(3)声明:这儿的拆分,仅仅是演示了拆分:
● 我们这儿演示的拆分,是根据Controller、Service、Dao的结构去拆的;而没有按照【在实际分布式项目中,根据如用户模块、商品模块的方式】去拆的;
● 即,我们这儿演示的maven拆分,仅仅是演示了拆分的思想而已;;;只要明白了这个思想,在实际中就可以根据具体的业务去灵活的运用;
二:演示项目准备:maven_advanced项目,简介;(PS:这儿的内容过于简单,没必要细看)
项目说明:
(1)本演示项目的主要目的是,演示使用Maven时,如何拆分项目;
(2)所以,本项目的内容十分简单,但也是一个包含了全流程的项目;同时,为了契合课程的内容,该项目没有使用【本机安装的Tomcat】,而是使用的【Tomcat插件】;
(3)关于该项目的构建,可以参考【(17)SSM开发书评网】、【Maven基础11:Tomcat插件;】中的内容;
(1)为了演示,准备了一个逻辑空间,创建了一一个演示用的User表:
(2)项目内容;
(3)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.wgy</groupId> <artifactId>maven_advanced</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <!--0.Maven国内阿里云镜像--> <repositories> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories> <dependencies> <!--1.引入Spring-webmvc依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.6.RELEASE</version> </dependency> <!--2.引入JSON序列化工具包jackson--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.11.0</version> </dependency> <!--3.Mybatis与Spring整合,所需的依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</version> </dependency> </dependencies> <!--构建--> <build> <!--设置插件--> <plugins> <!--使用Tomcat具体的插件--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> </plugin> </plugins> </build> </project>
(4)applicationContext.xml;
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--Spring 开启组件扫描--> <context:component-scan base-package="com.wgy"></context:component-scan> <!--开启spring MVC注解模式--> <mvc:annotation-driven/> <!--将图片/JS/CSS等静态资源排除在外,这样做可提高Spring MVC对url的处理效率--> <mvc:default-servlet-handler/> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">