SpringMVC 和 Maven(进阶) 学习

SpringMVC 和 Maven 学习

一、Spring MVC 拦截器

1.1 拦截器与过滤器的区别

  • 归属不同:Filter属于servlet技术,Interceptor属于SpringMVC技术
  • 拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强

拦截器入门案例

image.png

image.png

image.png

  • 多拦截器执行顺序

image.png

  • 小结

image.png

二、Maven 进阶

2.1 Maven 分模块开发与设计

2.1.1 开发意义

image.png

案例:将 dao 和 entity 抽取出来(资料群:2022-07-23)

  1. 新建对应的dao和entity模块

image.png 2. 将dao和entity对应的坐标导入到项目中 image.png 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文件)
  • 作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
    • 当工程中某个模块发生更新(变更)时,必须保障工程中与已更新模块关联的模块同步更新,此时可以使用聚合工程来解决批量模块同步构建的问题

image.png

案例:聚合工程开发

  1. 设置打包类型,设置子模块名名称
<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>

2.4.3 系统其他属性

image.png

2.5 多环境配置与应用

image.png

image.png

2.6 跳过 Maven 测试

image.png

image.png

image.png

2.7 私服

猜你喜欢

转载自juejin.im/post/7123520628753170468