• springboot项目启动和部署


    soringboot项目启动:
    springboot内部嵌入了tomcat,在spring-boot-starter-web里可以找到,
    在这里插入图片描述

    这样在研发过程中就不在需要tomcat服务器,并且springboot项目在打完jar之后,可以直接启动也不需要另外的本地tomcat。也就是说拿到springboot项目jar之后,完全可以在一台只有jdk的机器上启动了。

    springboot启动
    上面说过了springboot项目自带了tomcat,所以项目启动和部署不需要额外的tomcat服务器了,这里关键的是springboot项目会有一个启动类,这个是springboot项目的入口,
    在这里插入图片描述

    上面可以看出启动类需要一个关键的注解@SpringBootApplication,看下改注解背后的内容,

    @Target(ElementType.TYPE) // 注解的适用范围,其中TYPE用于描述类、接口(包括包注解类型)或enum声明
    @Retention(RetentionPolicy.RUNTIME) // 注解的生命周期,保留到class文件中(三个生命周期)
    @Documented // 表明这个注解应该被javadoc记录
    @Inherited // 子类可以继承该注解
    @SpringBootConfiguration // 继承了Configuration,表示当前是注解类
    @EnableAutoConfiguration // 开启springboot的注解功能,springboot的四大神器之一,其借助@import的帮助
    @ComponentScan(excludeFilters = { // 扫描路径设置(具体使用待确认)
    @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
    @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
    public @interface SpringBootApplication {
    ...
    }

    可以看出@SpringBootApplication使用了多个注解,其中最为重要的就是
    @Configuration 使用javaconfig方式进行配置,形式的Spring Ioc容器的配置类
    @EnableAutoConfiguration 比较重要的,这里不做解释了
    @ComponentScan 扫描注解,自动扫描并加载符合条件的组件
    其实可以说,你可以使用@SpringBootApplication,你也可以使用以上三个注解都一样。
    详细介绍https://www.cnblogs.com/shamo89/p/8184960.html

    有个这些,你就可以简单的理解,启动一个springboot项目,会从启动类入口进去,通过@SpringBootApplication注解之后自动的去扫描加载一些javaconfig 配置,启动内置tomcat将项目运行起来。

    springboot项目部署方式
    启动方式一,jar包(官方推荐):
    我们以前在部署web项目的时候基本山都是打成war包放到tomcat的webapp下面,启动tomcat。这种方式不仅仅耗时耗力,还需要要求部署项目的服务器事先就要有能够部署的环境。有时候还需要手动修改tomcat配置文件。
    springboot就是极大的简化了项目的部署。
    我们只需要将项目打成jar包,然后放在只需要有jdk的服务器上,java -jar ***就能启动项目了。

    那么问题来了,以往我们对于web项目都是war包的形式进行部署的,为啥springboot项目却能想启动java应用程序一样部署呢?
    上面也已经说过了,springboot是内置tomcat了的,所以项目启动的时候回自动启动tomcat,但是我们都知道启动jar文件都是需要有主类(main),
    没错,它是就是我们的启动类,既然是主类,那肯定就会有启动弄类配置的吧,就是这个maven-shade-plugin,去找找看。


    果然是有的,所以说现在问题都解决了,springboot通过maven插件配置了启动类,所以就可以java -jar的形式启动项目,启动类被启动之后就会扫描加载配置,启动内置的tomcat等,最后完成了项目的启动部署了。
    启动方式二,war包
    1.传统的部署方式:将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即可访问。
    开发环境:jdk1.8 + IDEA
    2.修改pom.xml
    完整pom.xml代码如下


    4.0.0

    <groupId>com.example</groupId>
    <artifactId>demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 这里打成war包 若打jar,需将war改为jar -->
    **<packaging>war</packaging>**
    
    <name>demo1</name>
    <description>Demo project for Spring Boot</description>
    
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <finalName>demo1</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    

    3.打包
    这里可以直接到项目根目录下面:运行 maven package命令,打包。
    4.将war放入外部tomcat的webapps目录下
    5.启动tomcat
    以上就是关于springboot和tomcat之间关系的使用总结,早上吃饭时候被曹宝问的一脸懵,查了查资料,总结以上,望大家指点,共勉曹宝,谢谢。

  • 相关阅读:
    Rabbitmq 性能测试
    B+树图文详解
    图的概念和存储(邻接矩阵,邻接表)
    WebApi系列文章
    Asp.Net MVC项目集成Swagger
    正则表达式匹配两个特殊字符中间的内容
    数学常数e的含义
    十大排序算法总结
    C#集合类型大揭秘
    深入System.Web.Caching命名空间 教你Hold住缓存管理(三)
  • 原文地址:https://www.cnblogs.com/takemyjavalisfe/p/13587864.html
Copyright © 2020-2023  润新知