SpringMVC 和 Maven 学习
一、Spring MVC 拦截器
1.1 拦截器与过滤器的区别
- 归属不同:
Filter属于servlet
技术,Interceptor属于SpringMVC
技术 - 拦截内容不同:Filter对所有访问进行增强,
Interceptor仅针对SpringMVC
的访问进行增强
拦截器入门案例
- 多拦截器执行顺序
- 小结
二、Maven 进阶
2.1 Maven 分模块开发与设计
2.1.1 开发意义
案例:将 dao 和 entity 抽取出来(资料群:2022-07-23)
- 新建对应的dao和entity模块
2. 将dao和entity对应的坐标导入到项目中 3. 在Maven中,install dao和entity 4. 编译项目,完成
2.2 依赖管理
2.2.1 依赖传递
- 依赖传递冲突问题
- 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
- 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖(站在自己的角度,隐藏自己)
<optional>true</optional>
排除依赖(站在别人的角度,隐藏自己)
<exclusions> <exclusion> <groupId>log4g</groupId> <artifactId>log4j</artifactId> </exclusions> </exclusions>
2.3 继承与聚合
2.3.1 聚合
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
- 聚合工程:通常是一个不具有业务功能的“空”工程(有且仅有一个pom文件)
- 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
- 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题
案例:聚合工程开发
- 设置打包类型,设置子模块名名称
<packaging>pom</packaging>
<!-- 设置管理的模块名-->
<modules>
<module>../springMVCMaBatis</module>
<module>../maven_03</module>
<module>../maven_04_dao</module>
</modules>
2.3.2 继承
:继承描述的是两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
- 作用:
- 简化配置
- 减少版本冲突
案例:子依赖父工程
<parent>
<groupId>maven_01_parent</groupId>
<artifactId>maven_01_parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>
案例:假如:A 项目不想继承 B 项目的依赖
// 在root项目添加依赖管理
<!-- 依赖管理 -->
<dependencyManagement>
<!--在root项目提供可选择的依赖资源-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencyManagement>
// 在子项目,引用父项目的依赖,不需要写版本
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
2.4 属性
案例
<!-- 定义属性 -->
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
2.4.1 在用 maven 打 web-app war
会提示 .xml 不存在,此时需要用到插件apache-war-plugin
2.4.2 在root
项目加载其他子项目的resources
<build>
<resources>
<resource>
<!-- 加载单个 -->
<!--<directory>../springMVCMaBatis/src/main/resources</directory>-->
<!-- 加载项目全部resources -->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>