Spring Boot的创建和使用

目录

1. Spring Boot 的目标与优点

1.1 Spring Boot目标

1.2 Spring Boot的优点

2. Spring Boot项目创建及运行

2.1 使用IDEA创建

项目创建

项目运行

2.2 网页版创建

3. 项目目录介绍和 Hello world

Spring Boot 目录说明

运行显示Hello world

约定大于配置


1. Spring Boot 的目标与优点

1.1 Spring Boot目标

Spring是为了简化Java程序的开发而诞生的, Spring是包含了众多工具方法的IoC容器, 而Spring Boot则是为了简化Spring程序开发而诞生, 所以Spring Boot是为了快速开发和使用Spring的脚手架.

1.2 Spring Boot的优点

  • 快速集成框架, Spring Boot提供了启动添加依赖的功能 (快速添加外部jar包), 用于秒级集成各种框架.
  • 内置运行容器, 无需配置Tomcat等Web容器, 可以直接运行和部署程序.
  • 快速部署项目, 无需依赖任何Web容器即可启动并运行项目.
  • 可以完全抛弃繁琐的XML, 使用注解和配置的方式进行开发.
  • 支持更多的监控的指标, 可以更加容易且直观观察到项目的运行情况.-

2. Spring Boot项目创建及运行

创建Spring Boot有两种方式:

  1. 通过IDEA创建 (主要创建方式)
    1. 专业版: 无需安装任何插件, 可以直接创建Spring Boot项目
    2. 社区版: 安装插件
  2. 通过网页版创建

2.1 使用IDEA创建

项目创建

要在IDEA中创建Spring Boot, 我们就需要先安装插件Spring Boot Helper.

因为Spring Boot的创建是属于高级功能, 而我们的社区版IDEA是不具备创建高级功能的能力, 所以需要先安装插件.

安装好之后, 它的名字就变成了Spring lnitializr and Assistant

接下来我们来创建Spring Boot项目

选择 spring boot 项目,选择合适 jdk 版本,设置创建项目源 (默认 spring 官网: start.spring.io)

项目的参数设置

选择Spring Boot版本, 以及添加项目依赖

设置项目名称和保存路径, 点击Finish就完成Spring Boot的项目创建了.

注意: 第一次创建Spring Boot项目需要加载很久, 因为当前Spring Boot框架并没有在自己的本地仓库.

如果启动类(src.main.java.com.example.demo)中的DemoApplication.java变成了蓝色的运行小图标, 那么就说明初始化好了.


可以看到, 右侧不存在Maven的选项卡, 因为IDEA并没有识别这个项目的类型, 所以没有Maven, 那么就需要再进行一个选择的操作:

点击OK之后, IDEA就会开始加载整个项目.

注: 如果项目加载出错, Maven国内源没有配置好, 具体请查看该篇博客http://t.csdn.cn/vdAIF.


这样我们的项目就创建好了.

项目运行

接下来我们来看一下这个项目有没有初始化好.

来到它的启动类.

启动类的标志为有@SpringBootApplication注解, 这个注解修饰的类就为Spring Boot的启动类.

然后我们点击main方法进行运行操作,

点击Run之后, 可以看到弹出了控制台, 如果控制台打印了启动所用的时间, 显示了有Spring的logo, 以及版本号等信息, 然后是启动信息, 最后是"Started DemoApplication in 6.289 seconds (JVM running for 7.467)", 这就说明项目已经创建好了.


2.2 网页版创建

我们也可以使用Spring官方提供的网页版来创建Spring Boot项目.

首先访问https://start.spring.io , 如下所示,

依照下图选择可以创建Spring Boot项目.

当点击生成之后, 网页就会开始生成项目了, 生成之后会有一个jar包,

并且浏览器会自动下载这个jar包,

把项目包导入IDEA中调试好就能运行,

注意删除四个无用文件:


3. 项目目录介绍和 Hello world

Spring Boot 目录说明

新建的Spring Boot项目的目录结构如下:

首先在项目底下有个src目录, src是项目的源, 在src下面有两个重要的文件包"main"和"test", 在main下的java包(为蓝色图标)是这个项目的java源代码, 所有的源代码都在这个包中, 也只有这个包能创建出.java.

另外一个重要的包resources则是存放资源和配置信息, 资源又分为两大类, 其中statics和templates是用来放前端文件的资源, application.properties是当前整个项目的配置文件.

和main同级的test, 是用来进行测试的包, 底下的java包(为绿色的图标)表示单元测试的代码.

运行显示Hello world

我们学习这一部分知识就是为了用于实现Web项目或接口的, 而之前是Spring其实是一个普通的Java项目, 没有办法直接和浏览器进互动, 所以接下来我们要使用Spring Boot来实现和浏览器及用户的交互.

在创建的项目包下创建TestController文件(注意一定要和启动类同一目录), 实现代码如下:

package com.example.demo;

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

@Controller
public class TestController {
    @RequestMapping("/sayHi")     // 相当于以前 Servlet 中的 @WebServlet("/url")
    public String sayHi(){
        return "Hello world";
    }
}

当我们启动项目并在Edge输入URL:"localhost:8080/sayHi"之后却看到没有按照预期结果显示, 这里的成因是默认情况下它以为我们返回的是名字叫做"Hello world"的静态页面, 所以它会去找我们statics中的这个页面, 结果发现这个页面不存在, 所以它是404, 那么为什么它会认为我们返回的是一个页面而不是一个字符呢?

Spring Boot最早是叫做Spring MVC, Spring MVC最早返回的就是一个视图, 所以Spring Boot就是返回一个视图, 那么我们可以通过加@ResponseBody来解决这个问题, 下面是最终的代码:

package com.example.demo;

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

@Controller
@ResponseBody
public class TestController {
    @RequestMapping("/sayHi")     // 相当于以前 Servlet 中的 @WebServlet("/url")
    public String sayHi(){
        return "Hello world";
    }
}

重启项目并重新输入URL打开之后,

可以看到显示了"Hello world".


约定大于配置

问题: 在TestController中添加类注解@Controller, 之前的Spring中需要配置base_package, 而在Spring Boot中不需要做也能注册到Spring中, 是如何做的?

它依靠的就是Spring Boot的设计理念: 约定大于配置.

约定大于配置就是, Spring提供了一个规则给我们, 接下来没有商量, 也不需要配置, 就按照它的约定来, 它的约定是, 我们想要把类加载到Spring中, 就必须要和启动类同一路径下, 这是Spring Boot的一个"死约定".

如何体现? 我们把这个TestController放到和启动类不同路径下, 然后运行并访问URL, 会发现变成404了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值