zoukankan      html  css  js  c++  java
  • spring boot启动原理步骤分析

    spring boot最重要的三个文件:1.启动类 2.pom.xml 3.application.yml配置文件

    一.启动类->main方法

    spring boot启动原理步骤分析

    1.spring boot通过fat jar方式用jdk命令java -jar jarname.jar启动的。

    fat jar就是包含被引用jar包的jar,因为会包含很多jar包,所以称为fat,肥胖。

    2.spring  boot通过static void main方法启动,main方法是java程序总是最先运行的地方,这个是由jvm虚拟机决定的。任何java程序都是这样。

    main方法启动,里面是调用SpringApplication.run(StrartApplication.class, args);

    1)springApplication的run()方法的,springApplication类是spring boot的类,run方法负责启动spring boot,首先扫描这个main类

    2)main类是有@EnableAutoConfiguration修饰的,main调用springapplication.run()方法让spring boot启动,这个注解开始起作用。

    @EnableAutoConfiguration作用是:根据maven pom的配置,“猜测”你是哪种应用程序(本地还是web),根据猜测去创建程序的环境。也就是spring环境,或者spring mvc环境。猜测出来后,也就环境创建好了,也就是springmvc,spring,spring boot环境创建成功。

    3)spring boot环境(spring,spring mvc)创建好并启动后,就可以扫描启动bean类了,将扫描到的启动bean注入到ioc容器中,

    通过@ComponentScan(basePackages = "com.pxj.oversea.*"),指定要扫描的类路径。

    也就是开机就要创建的bean,将这些bean注入到spring的ioc中,供后面程序使用。

    4)至此spring完全启动成功,扫描了要自动启动注入的bean,ioc容器已完全可以用。

    那么哪些类要spring自动扫描并注入呢?

    答:当然是那些controller之类的啦,有@restcontroller修饰的类,要对外提供服务啊,最至关重要的东西,核心服务当然要程序启动时候就启动啊

    至此,一个spring boot的启动类就创建了,代码如下:pom.xml

    /**
     * project starter access
     * @author PANXUEJUN725
     *
     */
    @EnableAutoConfiguration
    @ComponentScan(basePackages = "com.pxj.oversea.*")
    public class StrartApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(StrartApplication.class, args);
        }
    }

    spring boot最重要的pom配置如下:

    <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.pxj.demo</groupId>
      <artifactId>pxj-oversea</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>pxj-oversea</name>
      <url>http://maven.apache.org</url>
    
      <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-parent</artifactId>
         <version>1.5.1.RELEASE</version>
       </parent>
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <disable.checks>true</disable.checks>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      </properties>
    
      <dependencies>
              <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.28</version>
            </dependency>
            <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-databind</artifactId>
              </dependency>
             <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.2.0</version>
          </dependency>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc7</artifactId>
                <version>12.1.0.1.0</version>
            </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>1.5.1.RELEASE</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
                <version>1.5.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.31</version>
            </dependency>
            <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-aop</artifactId>
              <version>1.5.1.RELEASE</version>
          </dependency>
      </dependencies>
          <repositories>
            <repository>
                <id>central</id>
                <name>Central</name>
                <url>http://maven.paic.com.cn/repository/maven-public/</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-milestones</id>
                <name>spring-milestones</name>
                <url>http://maven.paic.com.cn/repository/maven-public/</url>
            </pluginRepository>
        </pluginRepositories>
         <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>1.5.1.RELEASE</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            <defaultGoal>clean install package</defaultGoal>
        </build>
    </project>

    spring boot的配置文件application.properties

    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.driverClassName=oracle.jdbc.OracleDriver
    spring.datasource.url= jdbc:oracle:thin:pa18data/pa182007@10.20.128.181:1526:d0pa18
    

      

  • 相关阅读:
    centos 8.5设置nginx开机自动启动
    python利用Faker模块造测试数据(转载)
    结构化分析建模
    关于使用com.anjiplus依赖实现的验证码功能在linux服务器上失效的问题
    vue 子组件提交接口,父组件刷新数据
    vue 全局钩子:路由守卫
    Scala函数式编程基础
    Flink
    Scala面向对象编程
    Scala运算符
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6710849.html
Copyright © 2011-2022 走看看