Maven高级

  • Post author:
  • Post category:其他




回顾



1,文件上传

fileupload

MultipartFile

  • 将上传的文件保存到硬盘上
  • 获取文件名



2,restful

url书写的一种风格。

http://localhost/user/1

springmvc支持restful。

@PostMapping("/{id}")
public User save(@PathVariable Integer id) {
	
}



3,校验框架



4,ssm整合(重点)



4.1 spring整合mybatis

SqlSessionFactoryBean

  • 别名
  • 数据源
  • 分页插件

MapperScannerConfigurer



4.2 spring整合springmvc

spring的核心容器的创建时机以及创建者

ServletContext

springmvc的容器对象和spring的容器对象的关系?

spring容器时父容器,springmvc容器是子容器。



今日内容

  1. 异常处理
  2. 注解版的ssm整合(了解)
  3. maven高级

    1. 项目的拆分
    2. 项目的聚合
    3. 项目的继承
    4. 属性的配置



1,异常处理



2,项目拆分



2.1 为什么拆分

在这里插入图片描述



2.2 拆分的分类

  • 按照模块拆分

    • ssm_user
    • ssm_product
    • ssm_order
  • 按照层拆分(常用)

    • ssm_pojo
    • ssm_dao
    • ssm_service
    • ssm_controller



2.3 拆分实操



2.3.1 ssm_pojo

  • 存放实体类
  • 依赖哪儿些第三方jar包(没有)



2.3.2 ssm_dao

  • 存放dao的接口

  • 存放映射配置文件

  • spring整合mybatis相关配置

    applicationContext-dao.xml

     <!--开启bean注解扫描-->
        <context:component-scan base-package="com.itheima"/>
    
        <!--加载properties文件-->
        <context:property-placeholder location="classpath*:jdbc.properties"/>
    
        <!--数据源-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>
    
        <!--整合mybatis到spring中-->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="typeAliasesPackage" value="com.itheima.domain"/>
            <!--分页插件-->
            <property name="plugins">
                <array>
                    <bean class="com.github.pagehelper.PageInterceptor">
                        <property name="properties">
                            <props>
                                <prop key="helperDialect">mysql</prop>
                                <prop key="reasonable">true</prop>
                            </props>
                        </property>
                    </bean>
                </array>
            </property>
        </bean>
    
        <!--映射扫描-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.itheima.dao"/>
        </bean>
    
  • 引入相关的jar

    <!--导入资源文件pojo-->
            <dependency>
                <groupId>com.itheima</groupId>
                <artifactId>ssm_pojo</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    
            <!--spring环境-->
            <!--spring环境-->
            <!--spring环境-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
    
    
            <!--mybatis环境-->
            <!--mybatis环境-->
            <!--mybatis环境-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.3</version>
            </dependency>
            <!--mysql环境-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <!--spring整合jdbc-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
            <!--spring整合mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.3</version>
            </dependency>
            <!--druid连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.16</version>
            </dependency>
            <!--分页插件坐标-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.1.2</version>
            </dependency>
    

注意:dao工程依赖pojo工程,要先将pojo工程安装到本地仓库



2.3.3 ssm_service

  • 存放的业务层的接口和类

  • 业务层相关的配置

    applicationContext-service.xml

     <!--开启bean注解扫描-->
        <context:component-scan base-package="com.itheima"/>
    
        <!--开启注解式事务-->
        <tx:annotation-driven transaction-manager="txManager"/>
    
        <!--事务管理器-->
        <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
  • 引入jar包

    <!--导入资源文件dao-->
            <dependency>
                <groupId>com.itheima</groupId>
                <artifactId>ssm_dao</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    
            <!--spring环境-->
            <!--spring环境-->
            <!--spring环境-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
    
    
            <!--其他组件-->
            <!--其他组件-->
            <!--其他组件-->
            <!--junit单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <!--spring整合junit-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.1.9.RELEASE</version>
            </dependency>
    
  • 单元测试类

    加载的时候记住需要加载两个配置文件

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:applicationContext-service.xml","classpath:applicationContext-dao.xml"})
    public class UserServiceTest {
    
        @Autowired
        private UserService userService;
    
        @Test
        public void testSave(){
            User user = new User();
            user.setUserName("Jock");
            user.setPassword("root");
            user.setRealName("Jockme");
            user.setGender(1);
            user.setBirthday(new Date(333333000000L));
    
            userService.save(user);
        }
    }
    



2.3.4 ssm_controller

  • 存储controller相关类

  • 配合文件(controller相关配置项)

    spring-mvc.xml

     <mvc:annotation-driven/>
    
     <context:component-scan base-package="com.itheima.controller"/>
    
  • 依赖的jar包

      <dependencies>
    
        <dependency>
          <groupId>com.itheima</groupId>
          <artifactId>ssm_service</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
    
        <!--spring环境-->
        <!--spring环境-->
        <!--spring环境-->
        <!--<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>-->
    
    
        <!--springmvc环境-->
        <!--springmvc环境-->
        <!--springmvc环境-->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.9.RELEASE</version>
        </dependency>
        <!--jackson相关坐标3个-->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.0</version>
        </dependency>
        <!--<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>-->
        <!--servlet环境-->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
        </dependency>
    
      </dependencies>
    
      <build>
        <!--设置插件-->
        <plugins>
          <!--具体的插件配置-->
          <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <port>80</port>
              <path>/</path>
            </configuration>
          </plugin>
        </plugins>
      </build>
    

项目结构如下:

在这里插入图片描述



3,项目聚合

在这里插入图片描述

问题:

  1. 聚合工程需不需要写代码?不需要的,只需要提供一个pom.xml文件
  2. 为什么需要聚合? 帮助我们快速构建项目



4,继承

如何体现继承?

是在被聚合的工程的pom文件中添加

<parent>
        <groupId>com.itheima</groupId>
        <artifactId>ssm</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--填写父工程的pom文件-->
        <relativePath>../ssm/pom.xml</relativePath>
    </parent>

作用:对依赖或者插件进行统一控制。锁定版本

如何锁定版本?

  • 在父工程中使用 dependencyManagement 标签



5,属性

自定义属性

<properties>
     <spring.version>5.1.9.RELEASE</spring.version>
     <junit.version>4.12</junit.version>
</properties>

使用属性

使用: ${}

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>



6,资源配置(了解)

在pom.xml

<properties>
     ...
     <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
</properties>
<build
       <!--配置资源文件对应的信息-->
<resources>
    <resource>
        <directory>${project.basedir}/src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
</build>

使用:

在jdbc.properties

在这里插入图片描述

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=itheima



7,多环境配置(了解)

在pom.xml

<!--创建多环境-->
    <profiles>
        <!--定义具体的环境:生产环境-->
        <profile>
            <!--定义环境对应的唯一名称-->
            <id>pro_env</id>
            <!--定义环境中换用的属性值-->
            <properties>
                <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
            </properties>
            <!--设置默认启动-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!--定义具体的环境:开发环境-->
        <profile>
            <id>dep_env</id>
            <properties>
                <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
            </properties>
        </profile>
    </profiles>


...

<build
       <!--配置资源文件对应的信息-->
<resources>
    <resource>
        <directory>${project.basedir}/src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
</build>

构建

mvn 指令 -P id

附件:

<?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.itheima</groupId>
    <artifactId>ssm_robin</artifactId>
    <version>1.0</version>

    <properties>
        <spring.version>5.1.9.RELEASE</spring.version>
        <mybatis.version>3.5.3</mybatis.version>
    </properties>

    <!--
        依赖管理: 锁定版本
    -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>

            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--
        引入jar包
        以下配置以后会放在子工程中
    -->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.21</version>
        </dependency>
    </dependencies>

    <!--
        插件管理
    -->

    <build>

        <!--
            插件版本锁定
        -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--端口控制-->
                        <port>80</port>
                        <!--虚拟目录-->
                        <path>/</path>
                        <!--编码(get请求方式)-->
                        <uriEncoding>UTF-8</uriEncoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <!--
            以下配置会定义在子工程
        -->
        <plugins>
            <!-- tomcat插件控制 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

小结:

  1. springmvc异常处理

    1. 定义异常处理器

      @ControllerAdvice

      @RestControllerAdvice

      @ExceptionHandler

  2. maven高级

    1. 拆分
    2. 聚合
    3. 继承
    4. 自定义属性配置



版权声明:本文为weixin_48048140原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。