1.SpringBoot2.x简介

2018年3月,SpringBoot从1.5版本更新到2.0版本,经过2年多时间版本上的迭代沉淀,SpringBoot2.x版本提供了更多更强大的新功能,对于小公司和新项目,很多都直接采用了2.0以上的版本进行开发,而对于已经上线稳定的1.x版本,2.x中核心的注解配置并没有做极大的变动,所以基于1.x学习2.x版本是很容易上手的。

 

1.1.SpringBoot2.x版本新特性

SpringBoot2.x中主要的一些更新特性如下:

  • 配置的变更

在 2.x 中废除了一些 1.x 中的配置,并增加了许多新配置,详细请查看以下链接中的变更表格。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Configuration-Changelog

  • JDK版本的升级

2.x版本至少需要JDK8的支持,并且2.x版本已经开始支持JDK9

  • 第三方类库的支持
  • 响应式编程支持
  • SpringData响应式支持
  • web加强
  • HTTP/2支持、Actuator加强、Gradle插件支持、Kotlin、Quartz支持、测试支持等

更多详细细节请参阅博文:https://www.cnblogs.com/littleatp/p/10498344.html

或移步至官网:https://spring.io/projects/spring-boot

 

1.2.SpringBoot2入门HelloWorld

下面基于IDEA使用SpringBoot2.3.4.RELEASE版本进行SpringBoot项目的搭建:

①系统要求:

Java8版本、Maven3.3+、IDEA2018+以上环境

 

②配置Maven conf/settings.xml文件,修改默认镜像及Jdk maven compiler版本号:

<mirrors>
    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
 
<profiles>
       <profile>
            <id>jdk-1.8</id>
            <activation>
              <activeByDefault>true</activeByDefault>
              <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
              <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
       </profile>
</profiles>

 

③基于Spring Initializr(或Maven)构建项目:

 

④添加starter-web依赖及简化部署配置:

pom.xml

<dependencies>
    <!--支持web开发依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
<build> <plugins> <!--springboot maven依赖:简化部署打包--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

 

⑤编写启动类、访问控制器:

@SpringBootApplication  //标注这个类是一个springboot应用:启动类下的所有资源被导入
public class Helloword2Application {
    public static void main(String[] args) {
        SpringApplication.run(Helloword2Application.class, args);
    }

}


//@Controller
//@ResponseBody
@RestController  //相当于@Controller与@ResponseBody
public class HelloworldController {
    @RequestMapping("hello")
    public String hello(){
        return "hello SpringBoot Starter。。。!";
    }
}

 

⑥可以在application.properties中修改默认端口配置:

#端口配置
server.port=8082

 

⑦启动项目,访问验证:

 

1.3.打包部署

①使用IDEA中Maven工具栏的clean、package可以轻松进行项目的打包部署工作:

 

②运行之后项目编译成功,生成.jar文件位于target目录下:

 

③使用window powershell可以执行运行jar包并以tomcat服务启动SpringBoot打包中的jar项目,达到项目启动运行的效果:

 

2.启动项基础配置

2.1.依赖管理

在pom.xml中SpringBoot基于父工程spring-boot-starter-parent依赖进行了javaversion的管理、配置资源的加载、并集成了编译、测试环境。

而在starter-parent源码中又基于spring-boot-dependencies加载了SpringBoot运行环境需要依赖的常用组件jar包的version号,及无需在父工程中特定

常用jar包的版本号,这个功能叫SpringBoot的版本仲裁:

 

如果需要自己自定义指定相应的version版本号,则需要配置:

<!--查看spring-boot-dependencies里面规定当前依赖的版本 用的 key-->
<!--在当前项目里面重写配置-->
<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

 

注意:如果引入的是SpringBoot非版本仲裁的jar,则需要配置version版本号。

 

2.2.包扫描注解

查看@SpringBootApplication源码可以得出,@SpringBootApplication相当于@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

@SpringBootApplication(scanBasePackages = "com.fengye.helloword2")  //标注这个类是一个springboot应用:启动类下的所有资源被导入
//@SpringBootConfiguration
//@EnableAutoConfiguration
//@ComponentScan("com.fengye.helloword2")  //以上三个注解等同于@SpringBootApplication
public class Helloword2Application {
    public static void main(String[] args) {
        SpringApplication.run(Helloword2Application.class, args);
    }
}

 

2.3.热部署启动

SpringBoot提供了热部署启动的功能,基于热部署可以在开发时利用“Ctrl+F9”快捷键基于页面或者配置端口的修改重启SpringBoot项目,节省开发中修改反复重启浪费的时间。

<!--热部署更新-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

基于spring-boot-devtools热部署只是一个“restart”重启的功能(更新动态页面),如果想要使用纯正的热更新“reload”的方式,需要安装JRebel插件

 

本博客写作参考文档相关:

https://www.cnblogs.com/littleatp/p/10498344.html

https://spring.io/projects/spring-boot

 

示例代码已上传至Github地址:

https://github.com/devyf/SpringBoot_Study/tree/master/helloword_create

posted on 2021-03-16 22:28  人无名,则可专心练剑  阅读(339)  评论(0编辑  收藏  举报