首先先复习一下SSM整合需要的配置文件
**web.xml
1. 监听器:ContextLoaderListener
加载配置文件:applicationContext.xml
2. 编码过滤器: CharacterEncodingFilter
3. 前端控制器: DispatcherServlet
加载配置文件:springmvc.xml
springmvc.xml
1. 注解扫描,扫描web包
2. 视图解析器: InternalResourceViewResolver
3. 注解驱动
4. 放行静态资源的方法
5. 类型转换器: 注意要引用类型转换器(再注解驱动中)
6. 文件上传解析器: 注意id固定
applicationContext.xml
1. 开启注解扫描,扫描service包
2. 创建连接池
3. 加载配置文件:jdbc.properties
4. spring整合MyBatis配置: SqlSessionFactoryBean, 注入连接池
5. spring整合MyBatis配置: MapperScannerConfigurer,指定扫描的dao包
6. Spring声明式事务配置**
Maven核心概念:
项目如何查找jar包:
使用了私服之后,每次查找jar包,如果本地仓库没有,会先去远程仓库(私服)去查找有没有,如果没有再回去中央仓库查找,如果你的同事在私服中上传了你需要的jar包,也可以直接从私服中下载,不需要到中央仓库下载
**
Maven依赖范围:
compile
- 最大的依赖范围
- 表示在项目依赖的包如果是compile范围,表示在编译、测试、运行时期都有效
- 会产生依赖传递
- 举例:几乎所有包都是compile依赖范围
provided
- 容器已提供范围。
- 如果项目依赖的包如果是provided范围, 表示编译有效,实际运行无效。
- 不会打入war包/jar包
4.举例:servlet包
runtime
- 运行时期有效
- 如果项目依赖的包如果是runtime范围,编译无效,运行有效。
- 会打入war包/jar包
- 举例:数据库驱动包
test
- 测试依赖范围
- 如果项目依赖的包如果是test范围, 只能在测试程序中使用。
- 不会打入war包/jar包
- 举例:junit、spring-test
**
哪些依赖范围会发生依赖传递,: compile、runtime
**
可选依赖 optional:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--
optional可选依赖
false 默认值,表示会发生依赖传递。别人依赖了当前项目,可以使用junit。
true 不会发生依赖传递,也就是只能当前项目可以使用junit。
应用场景:
如果对一些jar的依赖只能当前项目使用,不允许发生依赖传递,可以通过可选依赖解决。
-->
<optional>true</optional>
</dependency>
**
依赖冲突
说明:
1、如果2个直接依赖:依赖了同一个坐标不同版本的资源,以配置顺序下方为主。
2、如果2个间接依赖:依赖了同一个坐标不同版本的资源,以配置顺序上方为主。
3、如果1个直接依赖与1个间接依赖:依赖了同一个坐标不同版本的资源,以直接依赖为主。