7

【SpringBoot】SpringBoot 概念,创建、运行

 1 year ago
source link: https://blog.51cto.com/panyujie/5576418
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.



1.什么是Spring Boot?

Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的.

Spring Boot 翻译⼀下就是 Spring 脚⼿架,什么是脚⼿架呢?

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot

Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。


2. SpringBoot 优点

  1. 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架
  2. 内置运⾏容器⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序.
  3. 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
  4. 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
  5. ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况.

PS:

关于监控杆指标,Spring Boot 有一个专门给它去做的 Actuator 监控指标
然后我们去继承这个监控指标的话,可以看到 Spring 项目运行的情况(非常详细的细节)!
比如:
当前 Spring Boot 项目中,有多少个 bean,每个 bean 都是在那个平台上运行的;
JVM 的版本号是多少;当前项目中有多少个定时目录,有多少个缓存。。。
它都是有详细描述的。
而且,我们甚至可以通过网页方式,直接将 Spring Boot 项目 给关闭掉。


3. SpringBoot 项目创建

3.1 打开IDEA创建

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_02
【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_03
【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_04
【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_05

点击 Finish 就完成 Spring Boot 的项⽬创建了。


注意事项:

第⼀次打开 Spring Boot 项⽬需要加载很久,因为当前 Spring Boot 框架并没有在⾃⼰的本地仓库。为了加速 Spring Boot 项⽬的下载,在打开项⽬之前,请先确认⾃⼰的 Maven 已经配置为国内源

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_06

国内 Settings.xml 的配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
  
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>
  <profiles>
  </profiles>
</settings>

3.2 项目目录介绍

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_07

Spring Boot 项⽬有两个主要的⽬录:

  • src/main/java 为 Java 源代码。

  • src/main/resources 为静态资源或配置⽂件:

  • /static:静态资源⽂件夹;

  • /templates:模版资源⽂件夹。


3.3 项目运行

【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_08

点击启动类的 main ⽅法就可以运⾏ Spring Boot 项⽬了。

启动成功如下图所示:

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_09

4. 在浏览器输出 Hello World!

在 demo 包下创建 UserController 类:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/sayhi")
    @ResponseBody
    public String sayHi(){
        return "Hello World!";
    }
}

重新启动项⽬,访问  http://localhost:8080/user/sayhi 最终效果如下:

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_10

注意事项:包路径错误

我们尝试将 controller 移动到其他包下,⽐如以下⼏种⽅式:

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_11
【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_12

运⾏我们的项⽬,发现程序报错了,如下图所示:

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_13

正确路径

当我们把要注⼊到容器类和启动类放到同级⽬录下时。

如下图所示:

【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_14

这时候 Spring Boot 项⽬才能正常的将 bean 注⼊到容器中。


5. 约定大于配置 思想

在编写上面编写项目代码的时候,其实就涉及到 “约定 大于 配置” 的思想。

不知道你们有没有发现,在我们创建 Spring Boot 项目的时候,是没有设置配置文件。【这是因为 Spring Boot 帮我们创建好了】

【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_15

而我们在将一个类 注入 到 Spring Boot 中的时候,和 Spring一样,是通过五大类注解来完 成的。

【SpringBoot】SpringBoot 概念,创建、运行_SpringBoot_16

但是!我们并没有在 配置文件中,并没有设定扫描路径!

那么,Spring Boot 是怎么确定 bean 的位置,就在 springb2 包下面的呢?
从而,将 有注解的类 注入到 Spring Boot 中的呢?

其实我在前面提过一句。
这正是 “约定 大于 配置” 思想的一种体现。
明明我们没有配置 扫描路径,但是Spring Boot 中 存在着一个“约定”。
将需要存入 Spring Boot 中的 bean,都放在 springBoot 的 目录下。

也就是说:
自动 生成 example 目录 下的 唯一子目录,就是根目录(启动类所处于的目录),也就是默认的扫描路径。

Spring Boot 就会去扫描这个“根目录”下的类,是否带有五大类注解。
如果有,在Spring Boot 启动的时候,直接将其实例化,并存入到 Spring Boot 中。
如果没有,则跳过。

因为 bean 已经被实例化了,因此,我们才能直接访问到,并且有效果。

【SpringBoot】SpringBoot 概念,创建、运行_创建SpringBoot项目_17

我们发现他是找不到资源的,这说明 Spring Boot 项⽬没有将对象注⼊到容器中.我们必须要把他放在同级目录或者是启动类目录的子目录才行


Spring Boot 是为了快速开发 Spring ⽽诞⽣的.

Spring Boot 具备

  1. 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
  2. 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
  3. 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
  4. 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
  5. ⽀持更多的监控指标,可以更好的了解项⽬的运⾏情况等特点。
  6. Spring Boot 的设计思想是约定⼤于配置,类上标 @SpringBootApplication 就可以启动 Spring Boot 项⽬了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK