代码下载
思路
对现在已有的ssh项目进行拆分拆分思路
将dao层的代码以及配置文件全体提取出来,放到一个表现上独立的工程。service、action拆分。
拆分完成对拆分后的项目进行聚合,提出概念 父工程
**ssh-parent** :父工程
**ssh-dao**
**ssh-service**
**ssh-web**
创建父工程01_maven_parent-ssh
父工程名称:01_maven_parent-ssh
创建好父工程目录结构:只有pom.xml,可以推断父工程不进行编码。
- 项目需要的依赖信息,在父工程中定义,子模块继承过来
- 将各个子模块聚合到一起
将创建好的父工程发布到本地仓库
将来 service、dao工程发布到本地仓库,发布的service工程会报错。
如果忘记此步骤,将父工程发布到本地仓库。
创建子模块01_maven_ssh-dao
ssh-dao负责数据访问层:包含dao相关代码和配置文件
-
右键–>new -->Maven Module
-
Module Name:01_maven_ssh-dao
-
Parent Project:选择父工程
-
Packaging:jar
-
将Spring的配置文件拆分
applicationContext-basic.xml:项目基础的信息
applicationContext-dao.xml:dao层bean对象
创建子模块01_maven_ssh_service
- 右键–>new -->Maven Module
- Module Name:01_maven_ssh_service
- Parent Project:选择父工程
- Packaging:jar
- 将Spring的配置文件拆分
- 在service工程pom.xml文件添加ssh-dao的依赖
创建子模块 01_maven_ssh-web
- 右键–>new -->Maven Module
- Module Name:01_maven_ssh-web
- Parent Project:选择父工程
- Packaging:war
- 将Spring的配置文件拆分
- 添加web.xml,加载项目和jar包中的spring配置文件
- 在ssh-web项目中添加ssh-service工程依赖
<!-- 通过上下文参数指定配置spring配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext-*.xml</param-value>
</context-param>
单元测试
- 批量加载spring配置文件
classpath:spring/applicationContext-*.xml
classpath*:spring/applicationContext-*.xml:既要加载本项目中配置文件,还要加载jar包中的配置文件
- 传递依赖
因为依赖会有依赖范围,依赖范围对传递依赖也有影响,例如有A、B、C,A依赖B、B依赖C,C可能是A的传递依赖,如下表格:
直接依赖\传递依赖 | compile | provided | runtime | test |
---|---|---|---|---|
compile | compile | - | runtime | - |
provided | provided | provided | provided | - |
runtime | runtime | - | runtime | - |
test | test | - | test | - |
总结:当项目中需要的某一个依赖没有传递过来,在自己的工程中添加对应依赖就可以。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class CustomerServiceTest {
@Autowired
private CustomerService customerService;
@Test
public void testFindOne() {
customerService.findOne(1);
}
}
测试
Maven 方式:
方式1:运行父工程。父工程将各个子模块聚合到一起。将ssh-web打成war包发布到tomcat
方式2:直接运行web工程
其他方式:
部署到tomcat