回顾
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容器是子容器。
今日内容
- 异常处理
- 注解版的ssm整合(了解)
- maven高级
- 项目的拆分
- 项目的聚合
- 项目的继承
- 属性的配置
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,项目聚合
问题:
- 聚合工程需不需要写代码?不需要的,只需要提供一个pom.xml文件
- 为什么需要聚合? 帮助我们快速构建项目
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>
小结:
-
springmvc异常处理
-
定义异常处理器
@ControllerAdvice
@RestControllerAdvice
@ExceptionHandler
-
-
maven高级
- 拆分
- 聚合
- 继承
- 自定义属性配置