说明:
(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表:
(6)Dao:UserDao,User.xml,mybatis-config.xml;
(7)Service:UserService,UserServiceImpl;
四:根据原项目,拆出【ssm_dao】;(需要使用到【ssm_pojo】)
五:根据原项目,拆出【ssm_service】;(需要使用到【ssm_dao】)
六:根据原项目,拆出【ssm_controller】;(需要使用到【ssm_service】)
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&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&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的;