srpingboot 初识

依赖管理

  1. 父项目(一直网上找)spring-boot-dependencies 决定了当前 springboot 预先配置的所有依赖及版本

      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
      </parent>
    
  2. spring-boot-dependencies 里导入了很多依赖,并不是所有的都会导入项目,后面说怎么根据需要导入必要的依赖

  3. 修改默认的依赖版本

    <properties>
        ...
        <mysql.version>8.0.21</mysql.version>
        ...
    </properties>
    
    <dependencyManagement>
    	...
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>com.google.protobuf</groupId>
                        <artifactId>protobuf-java</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        ...
    </dependencyManagement>
    

    上面是 springboot 配置的,如果自己项目要修改,两种方式

    <!-- 方式一:直接修改 dependency 版本 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- 覆盖版本 -->
        <version>5.1.46</version>
    </dependency>
    
    <!-- 方式二:修改变量,maven 优先原则,会优先使用自己项目的版本号 -->
    <properties>
        ...
        <mysql.version>5.1.46</mysql.version>
        ...
    </properties>
    

    starter

    1. 一个 starter 就是一个场景,这个场景会引入所有相关依赖

    2. 官方 starter 命名为 spring-boot-starter-xxx,非官方的为 xxx-spring-boot-starter

    3. 比如 spring-boot-starter-web 就引入了 web 相关的所有依赖

      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-json</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
              <version>2.3.4.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
              <version>5.2.9.RELEASE</version>
              <scope>compile</scope>
          </dependency>
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</artifactId>
              <version>5.2.9.RELEASE</version>
              <scope>compile</scope>
          </dependency>
      </dependencies>
      

    自动配置

    比如 springMVC,要是我们自己配置 springMVC 要配置 DispatcherServlet、文件上传、中文乱码、tomcat 等等

    比如 spring 我们要配置 servlet 监听器、ioc 容器(@companScan)等

    但是 springboot 就不用我们自己配置了,自动配置好了

    <!-- springboot 支持的所有配置项都在这里(这里只是 springboot 的,非官方的在自己的 xxx-autoconfigure中 ) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.3.4.RELEASE</version>
        <scope>compile</scope>
    </dependency>
    

    这个里面的配置非常多,并不是每个都会配置,springboot 会按需进行配置(怎么自动配置,怎么按需配置,后面原理说)

posted @ 2024-07-05 13:03  CyrusHuang  阅读(1)  评论(0编辑  收藏  举报