SSM整合概念说明
整合思路
- 编写Spring配置文件 测试是否成功
- 编写SpringMVC配置文件 测试是否成功
- 整合Spring和SpringMVC 测试
- 编写Mybati配置文件
- 整合mybatis和Spring 测试
- SSM三个一起整合 测试
点击Finish完成
可以看见文件目录结构,这里idea的bug原因,没有java跟resources目录,为了符合maven目录结构
选择其中的java跟resources目录,右键
创建一个Test包,这里,注意是在<font color="red>src上面创建
maven结构已经满足,引入依赖,相当于复制jar包到项目中
<?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">
<!-- pom版本的项目描述。-->
<modelVersion>4.0.0</modelVersion>
<!-- 坐标 -->
<groupId>club.adger</groupId>
<artifactId>ssm-project</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 web项目 一定war包 其他为jar 如果是maven拆分聚合多模块,父工程一定是pom-->
<packaging>war</packaging>
<!-- 名字 可以删除 这两个-->
<name>ssm-project Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!-- 版本控制 -->
<properties>
<!-- 项目构建编译之后输出编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 编译源代码的版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- Spring版本 -->
<spring.version>5.2.7.RELEASE</spring.version>
<!-- 日志输出版本 -->
<slf4j.version>1.7.30</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<!-- 驱动版本 -->
<mysql.version>5.1.6</mysql.version>
<!-- mybatis版本 -->
<mybatis.version>3.5.5</mybatis.version>
<!-- 跳过单元测试 就是会不会编译测试类 -->
<maven.test.skip>true</maven.test.skip>
</properties>
<dependencies>
<!-- Spring AOP相关的技术 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 容器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- SpringMVC 依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring单元测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring 事务 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- SpringJDBC模板技术 SpringTemplate-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<!-- 这里的 <scope></scope>代表maven中的 测试范围 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行-->
<scope>compile</scope>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--
servlet的依赖
<scope>provided</scope>
provided 避免 jar包 冲突 因为tomcat中也有servlet-api
compile,缺省值,适用于所有阶段,会随着项目一起发布。
provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- jsp 表达式 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- mybatis 需要的jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis整合Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- c3p0连接池的jar包-->
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
</dependencies>
<build>
<finalName>ssm-project</finalName>
<!-- maven插件 -->
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
编写MVC模式的包,这里我已经提前写好了测试类
其中Service中写测试Spring环境的接口跟实现类,让Spring来管理这个Service
接口
package club.adger.service;
/**
* Created with IntelliJ IDEA.
*
* @Auther: Adger
* @Date: 2020/07/01/7:34
*/
public interface TestService {
void TestSpring();
}
实现类
package club.adger.service.impl;
import club.adger.service.TestService;
import org.springframework.stereotype.Service;
/**
* Created with IntelliJ IDEA.
*
* @Auther: Adger
* @Date: 2020/07/01/7:34
*/
@Service("testServiceImpl")
public class TestServiceImpl implements TestService {
@Override
public void TestSpring() {
System.out.println("Spring环境成功");
}
}
编写Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=<