Spring初识

本节包括:

  • spring5的新特性
  • springboot和springcloud的优势
  • 基本打jar包以及运行
  • 不使用parent引入spring依赖

spring 5.x支持Java8+、kotlin语言;支持webflux异步编程模式;去掉了一些支持,例如velocity模板引擎。

springboot和springcloud,开箱即用;非功能性封装,深度整合生态圈,注重运维,将最佳实践固化到框架中;

初始化项目、打包、执行jar

使用spring initializer快速搭建应用,引入web和actuator两个依赖,编写hello spring Controller后执行。

> curl http://localhost:8080/hello
hello spring
// 探测应用状态
> curl http://localhost:8080/actuator/health
{"status":"UP"} 

maven快速打包,-Dmaven.test.skip=true跳过单元测试

> mvn clean package -Dmaven.test.skip

执行jar,此时应用作为一个独立的进程执行,可以接受HTTP请求。

> java -jar geektime-hello-spring-0.0.1-SNAPSHOT.jar

Spring Boot默认打可执行jar包,jar包中包含所有依赖jar包,并且包含web容器,因此可以直接运行。也可以打成普通war包,使用外部容器(例如Tomcat)运行。实际代码打出的jar包是.original包,不可执行。

不使用springboot parent如何配置pom文件?

当某些情况,例如我们需要依赖另外一个包作为parent,此时我们没办法继承springboot的pom了。

<!--管理依赖,引入spring-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.5.6</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  • dependencyManagement用来引入SpringBoot的依赖管理,管理依赖、version、exclusion等,repackage是为了能够打出可执行的jar包

  • 使用repackage,作用是告诉maven什么时候执行plugin动作。因为我们如果不用spring-boot-starter,那就用不了Spring Boot的一些默认配置,在Maven的配置里默认是不会调用Spring Boot的Fat Jar的打包逻辑,所以需要配置一下。

posted @ 2021-11-16 00:13  Awecoder  阅读(55)  评论(0编辑  收藏  举报