maven基础回顾

1)基础
  (1)SQLyog

  (2)3大框架整合的回顾

  (3)本项目的座标是必须的


  (4)导入一个依赖:
    <groupId>
    <artifactId>
    <version>
    注意:其实写入一个座标,并不是导入一个jar包:
      1:spring-context 5.0.2
        aop、beans、context、core、expression、jcl
      
        因为:导入一个包时,它所依赖的其它包都会自动导入进来;

        
      2:spring-beans 4.2.4
        点击带有分叉的按钮(Show Dependencies)-->项目及其jar包下 及其 jar包的jar包的传递依赖的关系图


      存在很大的问题:
        spring-core,一个是4.2.4  一个是 5.0.2;
        如果beans比context放前面, 发现pom中2个依赖配置的先后关系导致导入的jar包都不一样了

  (5)解决jar冲突方法
    方式1:第一声明优先原则(先声明的jar包座标下的依赖包可以优先进入项目中);

    方式2: 路径近者优先原则(直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径最近的)
      理解2个概念:
        直接依赖: 项目中直接导入的jar包就是该项目的直接依赖包;
        传递依赖: 项目中没有直接导入的jar包,可以直接通过项目直接依赖jar包传递到项目中去;

    方式3: 排除法[推荐]
          (当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号,
            因为此时依赖包使用的版本和默认的本jar包一样)

        <exclisions>
          <exclusion>
            <groupId>
            <artifactId>
          <exclusion>
             ...
        <exclisions>


    总结: 整理解决完毕冲突的jar包版本的整合-->下次直接粘贴即可
 
  (6)一些标签
    1:导入tomcat7插件:后,拿到别的项目的依赖包,都属于传递依赖.

      <build>
        <plugins>
          <plugin>
            <groupId> 

    2:项目依赖的jar包:
      <dependencies>

    3:锁定jar包版本:
      <dependencyManagement> (这个只启动锁定版本的作用,并不会引入jar包)

      说明: 
        maven工程可以分父子关系的. 凡是依赖别的项目后,拿到别的项目的依赖包,都属于传递依赖.
          如: A项目被B项目依赖,那么我们A项目中所有jar包都会传递到B项目中.
                如:spring 5.x  B项目却是spring 4.x,B项目开发者,如果在B项目中导入一套ssm框架
                  的jar包,对于B项目是直接依赖,直接依赖的jar包,就会把A项目传递的jar包覆盖掉,
                  那么此时,A项目运行需要5.x的spring包,B项目却要spring 4.x项目的包,代码就起
                  冲突了.

                为了防止以上情况出现: 我们可以A项目中主要jar包锁住,那么其他依赖该项目的项目中,
                  即便是有同名jar包直接依赖,也无法覆盖.

          如何锁jar包?
             XML中的EL表达式,就是KEY值,

             统一管理jar包版本:
                <properties>
                   ...

                之所以能这样写,完全取决于约束


2)2大核心功能:
    依赖管理(maven对项目中jar包的管理过程):
      1:传统工程我们直接把jar包放置在项目中;
      2:maven工程真正的jar包放置在仓库中,项目中只用放置jar包的座标; 
      
    一键构建(此功能不是必须,因为可以使用我们自己安装的tomcat进行上述功能):
      1:maven自身集成了tomcat插件,可以对项目进行编译、测试、打包、安装、发布等操作;

3)依赖管理说明:
  (1)3类仓库
    1:本地仓库
    2:远程仓库(即私服:放置了我们公司内部开发需要用的jar包,不用联网的情况下使用,局域网去远程仓库下载jar包)
    3:中央仓库(安装完maven后,就自动连接了中央仓库,可以联网即可从中央仓库下载jar包到本地仓库)

  (2)3类仓库的关系
    1:当启动maven工程的时候,maven工程会通过pom文件中jar包的座标去本地仓库找对应的jar包;
        找本地的源码;
    2:默认情况下,如果本地仓库没有对应jar包,maven工程会自动从中央仓库下载jar包到本地仓库;
    3:在公司中,如果本地没有对应jar包,会先从私服下载jar包;
    4:如果私服也没有,可以从中央仓库下载 也可以从 本地上传(本地的仓库打成包上传到私服);


4)一键构建说明
  (1)clean
  (2)compile
  (3)test
  (4)package: 打在了target下
  (5)install: 安装到本地仓库
  (6)deploy: 本地做好的项目直接上传好私服

  3套生命周期:
    clean

    默认生命周期

    站点生命周期

5)maven工程拆分与聚合的思想


6)传统工程
  (1)用web-app骨架创建工程
  (2)新建java文件夹-->Mark Directory as--> Sources Root
  (3)新建resources文件夹(配置文件)-->Mark Directory as--》Resources Root
  (4)新建test文件夹-->新建java文件夹-->Mark Directory as--> Sources Root


  用Mytabis持久层框架,将不用写实现类,让Mytabis帮我们生成接口的代理对象

  resources下不能写.,写/,-->新建ItemsDao.xml写入约束;

  Mytabis和Spring整合的,因此不用创建主Mytabis主配置文件,而是所有信息交给Spring管理即可:
    applicationContext.xml-->写入约束:
      dao层配置文件
        1:配置连接池-->反射的方式写出驱动类对象;
        2:SqlSessionFactotyBean工厂:
          放入连接池对象;
          SqlSession配置,因为SqlSession是线程不安全的,我们每次使用新的SqlSession;
        3:扫描接口包路径,生成所有接口的代理对象,并且放入spring容器中;

        测试:
          获取spring容器 ApplicationContext
          从容器中获取dao代理对象

      service层配置文件
        原则: 自己写的类用注解,框架的类用配置文件;
        @Autowired注解通: 写完的变量是没有值得,让Spring容器帮我注入一个值;

        1:配置组件扫描;
        2:aop面向切面编程,切面就是切入点和通知(增强类)的组合;
        3:tx:advice-->配置的事务的通知
        4:aop:pointcut配置切面

        面向切面编程思想配置好了我们的声明事务;
 
      接着,就不要拿dao了,要去拿service

  SpringMVC:
    组件扫描;
    处理器映射,处理器适配器;
    视图解析器: 前缀 + 后缀;
    释放静态资源;

    EL表达式

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章