• 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的打包逻辑,所以需要配置一下。

    版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    Xaml引用图片路径的方式
    并发概念模型:JMM(JAVA内存模型)
    并发组件之一:ThreadLocal线程本地变量
    并发锁之二:ReentrantReadWriteLock读写锁
    并发锁之一:ReentrantLock重入锁
    AQS同步队列器之二:等待通知机制
    AQS同步队列器之一:使用和原理
    css常用操作
    自动生成mybatis代码
    jdk动态代理源码分析(二)---依赖接口的实现
  • 原文地址:https://www.cnblogs.com/dtyy/p/15559236.html
Copyright © 2020-2023  润新知