springboot一:创建第一个springboot以及该注意的问题

前言

  spring框架盛行了多年,然而像我这样待业的应届生,并从事java方向开发人员来说,都会把spring框架当做开发中不可或缺的一部分,一直的模式都是以applicationContext.xml配置文件的形式的存在,经常和mybatis,springmvc的整合。刚开始学习spring的时候对配置一知半解,经常出错,后来对spring多次学习后,虽然配置能够提高java开发的效率,但是如果一个项目十分大的时候,那么这个时候的配置简直就是地狱,数量多又十分复杂,并且一个配置出错会导致其他位置出错,一个bug一找又是一整天。也不是说spring不好或者什么,在学习计算机开发的,都应该去及时的学习这些很技术。
  后来这些问题也被spring的公司团队发现,他们为了能够让用户更好的使用spring,于是在spring的基础上开发了springBoot框架,让开发人员不用再去注重配置文件的繁琐而是把精力放到业务逻辑以及更深层次的架构方面。
  不过学习spring也是很有必要的。

SpringBoot优点

  1. 创建独立的spring应用。
  2. 嵌入Tomcat、Jetty而且不需要部署他们直接运行。(刚开始的时候我就犯了一个特别蠢的问题,去运行Contoller的时候自己手动的配置了一个Tomcat,然而直接运行SpringBoot的入口类就可以了。)
  3. 提供“starters”来简化Maven的配置。
  4. 尽可能自动配置spring应用,绝对没有代码生成和XML生成。
  5. 提供生产指标、健壮性检查和外部化配置

输出一个Hello SpringBoot

一个细节性问题,在新建项目之前需要将编码格式改成utf-8的格式,防止自己到时候还要处理一些不必要的问题。

我是使用的是IDEA。

1.点击创建项目按钮。选择Maven(当然可以选择 Spring Initializr一步完整建立,我是才入门,所以选择最为复杂的,想去具体了解其中的原理),确定SDK版本没有什么问题后点击next。

2.确定GroupId和ArtifactId,点击next。

3.检查没有什么问题后点击next。

4.项目创建完成后,这是一个Mave项目,我们得添加SpringBoot的基础配置,首先到官网

https://spring.io/projects/spring-boot。然后在Learn中找到最新版本打开他的文档。然后在找到 Maven Installation

 

 

 →→→→→→→→→→

 →→→→→→→→→→打开文档

 

 

 

打开Maven installation,将里面的SpringBoot配置复制到项目的Pom.xml文件中。让IDE自动加载其主要配置。

 

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<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>org.yangxin.learnspringboot</groupId>
    <artifactId>firstlearn</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

 

5.已经完成配置导入,IDE自动加载。点击External Libraries可以看到SpringBoot自动导入的依赖;在Spring中的话,这些都需要我们自己去导入。

6.整体的目录结构和原来Maven没有什么区别,src/main/java 存放java逻辑;src/main/resources 存放资源配置文件;src/test 则是测试相关的。在java包下建立一个org.yx.springboot包(包名不一定要相同);重点来了:SpringBoot是将大多数配置都自动完成,不需要Tomcat等这些容器,所以我们需要创建启动SpringBoot的启动类。

7. 建立XXXXXApplication.java,在类的上面使用@SpringBootApplication注解来标明这是一个SpringBoot的启动类,但是启动只能有一个,这个注解也只能使用一次;然后声明JAVA函数入口函数main,再使用SpringApplication.run调用执行入口。基本的Spring的配置完成。如果使用spring Initializr会一步到这儿。

 

8.建立一个Controller测试一下。新建SpringController,如下

  

9.在入口类中启动SpringBoot。

如果控制台出现如下信息,表示已经启动成功。那么我们访问http://localhost:8080/index。得到输入字符串:Hello Spring Boot! 

那么表示一个简单SpringBoot完成。(刚开始摸索的时候,我以为还要配置Tomcat,在这步的时候,我选择去配置Tomcat,然后访问http://localhost:8080/index,怎么都是错误,手动捂脸)。

输出一个Hello SpringBoot下的分析

1.关于pom.xml的分析:

①:在让这个小项目运行起来的时候,我们在pom.xml中配置<parent>标签。这个标签的作用是什么:这个标签是一个版本控制,在父模块的父模块存储了所有默认依赖的jar包的全部版本信息。在SpringBoot的pom.xml的配置中,我们不需要像在Spring 中配置版本信息,虽然这个在IDE中也很方便,但是在其他编译环境就没有这么便利,比如eclipse。

我们把鼠标放在spring-boot-starter-parent上,按住ctrl+鼠标左键,我们进入到其父模块中,看到还有一个父模块,再进入父模块。

 

 

 

我们发现在这里面存储所有jar包的版本信息,非常的多,我们在配置parent的启动器(starter)时,这些都自动调用进来,十分的方便。

②:我们还配置了web的应用场景,starter叫启动器/应用场景,我们配置的是web的应用场景,那么SpringBoot会自动的加载配置与web相关的jar包,不需要像spring一样自己配置。SpringBoot中还提供了44种应用场景。

我们回到当初配置pom.xml的官方文档https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/。找到第三章的Starters。

我们发现非常多的各种场景的启动器,SpringBoot都做了相应的打包,如果需要相应的功能,直接配置相应启动器。配置什么的都交给SpringBoot。

虽然SpringBoot给出了很多的启动器,但是在一些特别大的项目的时候,所给的启动器不满足业务要求,通常需要我们自己去内制一个特定的启动器。

我是在学习这些新东西的时候,通常习惯去翻官方文档,虽然英语不好,不过这个学习效率还是挺高。

2.程序入口类分析XXXXApplication.

①:使用注解@SpringBootApplication声明,表示这个类是主类,是SpringBoot的执行入口,没有这个注解的类当然不是执行入口咯。没有执行入口,那么SpringBoot是启动不了的。所以在SpringBoot上这一点十分重要。

②:关于main函数中的SpringApplication.run(XXXXApplication.class,args)。第一个参数的意义:就是指明Spring扫描组件的范围:是XXXXApplication这个类所在包的以及所在包的自包。只有在这个范围的controller、service、dao、等才会被扫描,不然是不会被扫描到的。如下图。

 

 

结语

1.SpringBoot是微服务开发的入门级框架。微服务就是将系统分割成一个个能够独立运行的jar包。

2. 这只是学习SpringBoot的创建方式,比较麻烦,真正应用的时候是创建Spring Initializer,这个十分方便和快捷。唯一不同的是,在创建过程中可以勾选将要使用到的启动器。

3.感谢https://www.cnblogs.com/ityouknow/p/5662753.html,这篇博客的入门。

 

 

 

 

 

 

 

 

 

 

 

 

 

萌新入坑SpringBoot,博客肯定有很多不足的地方,希望大家指正、一起讨论和学习。

 

posted @ 2018-12-14 14:03  轻抚丶两袖风尘  阅读(473)  评论(0编辑  收藏  举报