Maven高级1、2、3、4:模块拆分思想;把项目拆成pojo、Dao、Service、Controller四个模块;

说明:

(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表:

(2)项目内容;​编辑

(3)pom.xml;

(4)applicationContext.xml;

(5)pojo:User;

(6)Dao:UserDao,User.xml,mybatis-config.xml;

(7)Service:UserService,UserServiceImpl;

(8)Controller:TestController;

(9)测试:查询和更新都可以;

三:根据原项目,拆出【ssm_pojo】;

1.创建【ssm_pojo】工程;

2.【ssm_pojo】工程,编写内容;

3.【ssm_pojo】工程,编译一下,看是否OK;

四:根据原项目,拆出【ssm_dao】;(需要使用到【ssm_pojo】)

1.创建【ssm_dao】工程;

2.【ssm_dao】工程,编写内容;

3.【ssm_dao】工程,编译一下,看是否OK;

五:根据原项目,拆出【ssm_service】;(需要使用到【ssm_dao】)

1.创建【ssm_service】工程;

2.【ssm_service】工程,编写内容;

3.【ssm_service】工程,编译一下,看是否OK;

六:根据原项目,拆出【ssm_controller】;(需要使用到【ssm_service】)

1.创建【ssm_controller】工程;

2.【ssm_controller】工程,编写内容;

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">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test_maven?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="12345"/>
        <property name="initialSize" value="10"/>
        <property name="maxActive" value="20"/>
    </bean>

    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.wgy.dao"/>
    </bean>
</beans>

(5)pojo:User;

package com.wgy.pojo;

public class User {
    private Integer id;
    private String name;

    public User() {
    }

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

(6)Dao:UserDao,User.xml,mybatis-config.xml;

package com.wgy.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface UserDao {
    /**
     * 查询方法
     * @param id
     * @return
     */
    public String selectById(Integer id);

    /**
     * 插入方法
     *
     * @param name
     * @return
     */
    public void insert(String name);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wgy.dao.UserDao">
    <select id="selectById" parameterType="Integer" resultType="String">
        select name from user where id = #{value}
    </select>

    <insert id="insert" parameterType="String">
        insert into user(name) values (#{value})
    </insert>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

</configuration>

(7)Service:UserService,UserServiceImpl;

package com.wgy.service;

public interface UserService {
    public String selectName(Integer id);

    public void insertName(String name);
}
package com.wgy.service.impl;

import com.wgy.dao.UserDao;
import com.wgy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;

    public String selectName(Integer id) {
        String name = userDao.selectById(id);
        return name;
    }

    public void insertName(String name) {
        userDao.insert(name);
    }
}

(8)Controller:TestController;

package com.wgy.controller;

import com.wgy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    UserService userService;

    /**
     * 查询方法
     * @return
     */
    @GetMapping("/test/t1/{id}")
    public String test1(@PathVariable("id") Integer id) {
        String name = userService.selectName(id);
        return name;
    }

    /**
     * 更新方法
     *
     * @return
     */
    @GetMapping("/test/t2/{name}")
    public void test2(@PathVariable("name") String name) {
        userService.insertName(name);
    }

}

(9)测试:查询和更新都可以;

演示项目准备好了,就可以愉快的开始了解Maven拆分了,把上面的项目拆成多个项目了;

针对上面的项目,我主要是拆成【ssm_controller】、【ssm_service】、【ssm_dao】、【ssm_pojo】这四部分;


三:根据原项目,拆出【ssm_pojo】;

1.创建【ssm_pojo】工程;

2.【ssm_pojo】工程,编写内容;

3.【ssm_pojo】工程,编译一下,看是否OK;

至此,根据原项目,拆分出的【ssm_pojo】模块,OK了;


四:根据原项目,拆出【ssm_dao】;(需要使用到【ssm_pojo】)

1.创建【ssm_dao】工程;

2.【ssm_dao】工程,编写内容;

(1)内容概述;

……………………………………………………

(2)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>ssm_dao</artifactId>
    <version>1.0-SNAPSHOT</version>



    <!--0.Maven国内阿里云镜像-->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

    <dependencies>
        <!--因为,【ssm_dao】需要使用到【ssm_pojo】中的User,所以,我们引入【ssm_pojo】-->
        <dependency>
            <groupId>com.wgy</groupId>
            <artifactId>ssm_pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>


        <!--1.引入Spring-webmvc依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.6.RELEASE</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>
</project>

说明:

(1)因为【ssm_dao】需要使用到【ssm_pojo】的User类等;所以,我们需要在【ssm_dao】中引入【ssm_pojo】; 

(2)因为这个项目中对象,也需要使用Spring的Ioc管理,所以这个项目也需要是一个spring项目,自然我们引入了【spring-webmvc】依赖;

          ● 其实,【ssm_dao】对于spring的需求,仅仅是【使用Ioc管理对象】和【mybatis与spring整合】;所以,我们也可以不引入【spring-webmvc】这个覆盖面很大的依赖,而是引入【spring-context】;(具体可以参考【Spring IoC容器与Bean管理4:使用XML方式实现Spring IoC预一:Spring IoC初体验一:IoC容器完成【对象的实例化】;】)

(3)然后,因为要【mybatis与spring整合】,所以相关MySQL,mybatis,mybatis与spring整合的依赖,都要引入;

(4)然后,因为使用了druid连接池,所以druid依赖也要引入;

……………………………………………………

(3)applicationContext.xml,UserDao,User.xml,mybatis-config,和【maven_advanced】项目相比没有变化;

3.【ssm_dao】工程,编译一下,看是否OK;

因为,我们在【ssm_dao】中引入了【ssm_pojo】; 所以,为了让【ssm_dao】这个使用maven管理的项目,能够找到【ssm_pojo】这个同样使用maven管理的项目的jar包;我们要记得把【ssm_pojo】给上传到本地仓库中去;

……………………………………………………


五:根据原项目,拆出【ssm_service】;(需要使用到【ssm_dao】)

1.创建【ssm_service】工程;

2.【ssm_service】工程,编写内容;

(1)内容概述;

……………………………………………………

(2)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>ssm_service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--0.Maven国内阿里云镜像-->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

    <dependencies>

        <dependency>
            <groupId>com.wgy</groupId>
            <artifactId>ssm_dao</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--1.引入Spring-webmvc依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>

    </dependencies>
</project>

说明:

(1)因为【ssm_service】要用到【ssm_dao】中的内容,所以,我们需要在【ssm_service】中引入【ssm_dao】;;;自然,我们要记得把【ssm_dao】工程打包上传到本地仓库,否则【ssm_service】会找不到的;

 

 

 (2)因为这个项目中对象,也需要使用Spring的Ioc管理,所以这个项目也需要是一个spring项目,自然我们引入了【spring-webmvc】依赖;

          ● 其实,【ssm_dao】对于spring的需求,仅仅是【使用Ioc管理对象】和【mybatis与spring整合】;所以,我们也可以不引入【spring-webmvc】这个覆盖面很大的依赖,而是引入【spring-context】;(具体可以参考【Spring IoC容器与Bean管理4:使用XML方式实现Spring IoC预一:Spring IoC初体验一:IoC容器完成【对象的实例化】;】)

……………………………………………………

(3)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/>


</beans>

……………………………………………………

(4) UserService,UserServiceImpl和【maven_advanced】项目相比没有变化;

……………………………………………………

(5)多个Spring工程,配置文件不能重名;

 

说明:

(1)有关SpringBoot项目在启动的时候,多配置文件的时候如何选择,可以参考【附加:Spring Boot项目:多个配置文件介绍;启动项目时候,怎么选择指定配置文件;】;可以获得一些启发;

(2)后面,我们运行整个项目的时候,【ssm_dao】和【ssm_service】这两个SpringMVC工程,是需要同时运行的;所以,这两个工程的配置文件,是不能重名的;;;为了,更加清晰明了,这两个工程的配置文件改名如下;

3.【ssm_service】工程,编译一下,看是否OK;

说明:

(1)这儿主要演示的是Maven项目拆分,所以这个spring项目比较简陋,比如service写好之后该及时测试一下;我们这儿就省略了;


六:根据原项目,拆出【ssm_controller】;(需要使用到【ssm_service】)

1.创建【ssm_controller】工程;

…………………………………………

然后,可以参考【(17)SSM开发书评网】、【Maven基础11:Tomcat插件;】中的内容,把这个项目,设为web工程;

2.【ssm_controller】工程,编写内容;

(1)内容概述;

……………………………………………………

(2)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>ssm_controller</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>

        <dependency>
            <groupId>com.wgy</groupId>
            <artifactId>ssm_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--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>

    </dependencies>

    <!--构建-->
    <build>
        <!--设置插件-->
        <plugins>
            <!--使用Tomcat具体的插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
            </plugin>
        </plugins>
    </build>

</project>

说明:

(1)因为【ssm_controller】要用到【ssm_service】中的内容,所以,我们需要在【ssm_controller】中引入【ssm_service】;;;自然,我们要记得把【ssm_service】工程打包上传到本地仓库,否则【ssm_controller】会找不到的;

(2)因为这个【ssm_controller】工程,是为了表现层使用的,所以这个工程必须是一个web工程;所以,我们一定要引入【spring-webmvc】依赖(PS:引入【spring-webmvc】后,其自动包含【spring-context】);而不能仅仅引入【spring-context】了;;;;能懂哈~~~

(3)然后,因为【ssm_controller】工程是需要发布的,所以需要Tomcat插件;同时,这个工程打包方式需要设为war;

……………………………………………………

(3)applicationContext-controller.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/>
    
</beans>

……………………………………………………

(4) web.xml;

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:applicationContext-*.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

说明

(1)【ssm_controller】中的applicationContext-controller.xml配置文件,加载【ssm_service】和【ssm_dao】工程配置文件的策略:加载配置文件需要修改一下,指定一下项目启动的时候,

          ● 说明1: 很容易知道(这也是自己以前就知道的知识点),项目在编译后,其配置文件的的位置是:即【resources目录下的applicationContext.xml配置文件】就是在【代码编译后的class文件目录的,根目录下】的;

所以,在web.xml中,通过【classpath*:applicationContext-*.xml】是能够找到【applicationContext.xml配置文件】的;

          ● 说明2:然后,【ssm_controller】、【ssm_service】、【ssm_dao】这三个spring工程,都是由有spring配置文件的;而且其名字是存在差异的;所以,在写路径的时候,用了*来表示,其就能很好的匹配到对应格式的配置文件;

          ● 说明3:然后,【ssm_controller】、【ssm_service】、【ssm_dao】这三个spring工程,我们都创建在了同一目录下;

然后,【ssm_controller】中的web.xml,要想找到【ssm_service的,applicationContext-service.xml】和【ssm_dao的,applicationContext-dao.xml】,就需要在classpath后面设置*;

至于,为什么这样是OK的,里面的细节,自己其实不是很清楚的;

3.【ssm_controller】工程,编译一下,看是否OK;

……………………………………………………

然后,把这个工程发布到Tomcat中去,看是否OK;参考【Maven基础9:IDEA中配置Maven;创建Maven工程;(IDEA中,maven的一些操作;创建一个【基于maven某个命令 “操作“ 】;)】去创建一个快捷操作;

(PS:上面记得Apply)

……………………………………………………

测试结果,是OK的;

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值