虽然本篇讲的是一个最简的SpringBoot应用,但是要说明的是:学习SpringBoot是有门槛的,这个门槛就是,

1:首先得有框架的基础,比如SSM;

2:MAVEN基础。

在学好上面两者的基础上,我们才能明白SpringBoot干了一件什么事情,以及它是怎么帮我们组织项目结构的。

我们假设你对于上面两者的知识都已经掌握,再开始对本文的学习。

1.创建web项目

然后一路next到finish。

等待Generating project in Batch mode完毕,最终生成的目录为:

2.配置pom

然后加入parent,spring-boot-starter-parent。

我们在学习使用MAVEN来创建SSM的时候,已经知道parent的大致作用,就是定义一些属性,这些属性包括项目所依赖的大三方jar包。那么在这里就应该大致知道了,spring-boot-starter-parent里面所定义的肯定也是一些类似的东西。比如定义好了所依赖的spring的version是多少等等。

spring-boot-starter-parent本身也是有版本的,在这里,我们使用的是2.1.3.RELEASE这个版本,

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.3.RELEASE</version>

</parent>

加入后,在idea中会自动帮我们到中央仓储中下载jar包。如果是第一次操作,内容则有点大(如下图达到了近600M),由此可见spring-boot-starter-parent的pom文件中会定义了多少依赖包,

除了spring-boot-starter-parent,由于当前项目是web项目,故让我们再加入一个spring-boot-starter-web的依赖,最终,看到的pom文件如下:

<?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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<packaging>war</packaging>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.3.RELEASE</version>

</parent>

<name>testboot01</name>

<groupId>com.zuikc</groupId>

<artifactId>testboot01</artifactId>

<version>1.0-SNAPSHOT</version>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

</dependencies>

</project>

在上面的pom中,细心的同学应该还能发现有一个spring-boot-maven-plugin的插件,一会我们在讲到项目启动的时候会说明这个插件。

3.测试代码

测试代码非常简单,让我们创建一个HelloApplication,如下,

package com.zuikc;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Configuration;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.ResponseBody;

@SpringBootApplication

@Configuration

@Controller

public class HelloApplication {

@RequestMapping("hello")

@ResponseBody

public String hello(){

return "hello zuikc.com!";

}

public static void main(String[] args) {

SpringApplication.run(HelloApplication.class, args);

}

}

接下来对代码进行一个简单的说明。这是一个最精简的SpringBoot的项目,可以看到代码有若干注解,

@SpringBootApplication:是Spring Boot项目的核心注解,表明这是一个由springboot启动的项目;

@Configuration:表明这是一个配置Spring的配置类。@Configuration由spring3.0开始被支持;

@Controller:表明这是一个SpringMVC的Controller控制器;

@RequestMapping我们则已经很熟悉了,配置一个url地址,剩下的@ResponseBody则无需多说,各位都明白。

奇妙就在于main方法,这个HelloApplication带main方法,就说明它能作为一个应用程序自启动。

事实上也确实如此!

让我们直接对代码,run as application 就行!

能看到这样的输出,

这表明什么?

这表明我们执行main方法后,springboot为我们启动了一个web服务器,能够为我们提供web服务!

然后,localhost吧……

4.测试代码的maven启动方式

除了run as application,由于在pom文件中我们配置了spring-boot-maven-plugin,所以我们可以使用maven的启动方式,

紧接着启动命令,能看到:

再localhost一下,看是不是很成功呢!

5.SpringBoot的优点

想必至此,大家应该已经明白了SpringBoot的优点。它让我们执行application一样的来执行JavaWeb项目。并且,基础0配置,就让这个JavaWeb项目支持了Spring和SpringMVC,而往常,我们往往要进行若干细致的配置才行。

有经验的同学,应该也已经明白了这里面的窍门,同时也知道这算不上多玄幻的技术。但是就是这奇思妙想,却极大的提升了我们这些开发人员的效率。

感谢关注“码农星球”。本文版权属于“码农星球”。我们提供咨询和培训服务,关于本文有任何困惑,请关注并联系我们。

SpringBoot无废话入门01:最简SpringBoot应用的更多相关文章

  1. SpringBoot无废话入门04:MyBatis整合

    1.Parent引入及pom配置 首先,如果要支持mybatis,那么我们就应该引入mybatis的starter.同时,由于连接本身还需要用jdbc的connetor和连接池,所以一并需要引入这些依 ...

  2. SpringBoot无废话入门03:SpringMVC支持

    1.默认配置 Springboot对于路径的默认位置为: spring.resources.static-locations=classpath:/META-INF/resources/,classp ...

  3. SpringBoot无废话入门02:SpringBoot启动分析

    1.核心注解 在上文中,我们讲到了@SpringBootApplication是SpringBoot的核心注解. 可以很方便的在idea中下载源码来查看该注解的源码,如下: 可以看到,该注解本身又被其 ...

  4. SpringCloud无废话入门01:最简SpringCloud应用

    1.创建Parent Parent很简单,创建一个空的maven项目,pom如下: <?xml version="1.0" encoding="UTF-8" ...

  5. SpringCloud无废话入门05:Spring Cloud Gateway路由、filter、熔断

    1.什么是路由网关 截至目前为止的例子中,我们创建了一个service,叫做:HelloService,然后我们把它部署到了两台服务器(即提供了两个provider),然后我们又使用ribbon将其做 ...

  6. SpringCloud无废话入门04:Hystrix熔断器及监控

    1.断路器(Circuit Breaker)模式 在上文中,我们人为停掉了一个provider,在实际的生产环境中,因为意外某个服务down掉,甚至某一层服务down掉也是会是有发生的.一旦发生这种情 ...

  7. SpringCloud无废话入门03:Feign声明式服务调用

    1.Feign概述 在上一篇的HelloService这个类中,我们有这样一行代码: return restTemplate.getForObject("http://hello-servi ...

  8. SpringCloud无废话入门02:Ribbon负载均衡

    1.白话负载均衡 在上一篇的介绍中,我们创建了两个一模一样的服务提供者:Provider1和Provider2,然后它们提供的服务也一模一样,都叫Hello-Service.为什么一样的服务我们要部署 ...

  9. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

随机推荐

  1. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集之安装Tomcat+Nginx反向代理Tomcat集群】

    1,安装Tomcat:和在windows下安装是一样的. 安装tomcat:上传后解压: tar -zxvf apache-tomcat-7.0.88.tar.gz -z:代表.gz格式的压缩包,-x ...

  2. RF:RF实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性—Jason niu

    %RF:RF实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 load data.mat a = randperm(569); Train = data(a(1:500),:); ...

  3. React + antd 组件离开页面以后出现Can only update a mounted or mounting component 的解决办法

    做项目的过程中,来回切换页面时,一直遇到Can only update a mounted or mounting component 这个问题,原因是当离开页面以后,组件已经被卸载,执行setSta ...

  4. 一个小demo 实用selenium 抓取淘宝搜索页面内的产品内容

    废话少说,上代码 #conding:utf-8 import re from selenium import webdriver from selenium.webdriver.common.by i ...

  5. SpringBoot的国际化使用

    在项目中,很多时候需要国际化的支持,这篇文章要介绍一下springboot项目中国际化的使用. 在这个项目中前端页面使用的thymeleaf,另外加入了nekohtml去掉html严格校验,如果不了解 ...

  6. 快速上手Git

    本文主要摘录于廖雪峰的Git教程,个别地方做了可能不恰当的修改或补充,主要方便自己回顾.查看更详细内容请移步廖老师博客.同时,感谢廖老师写出这么好的入门指导. (有彩蛋!!!) 一.热身 1.初始化一 ...

  7. codeforces148----E. Porcelain

    #include <iostream> #include <cstring> using namespace std; ; int s[maxn];//s[i]表示每行前i个数 ...

  8. Redis自学笔记:3.6入门-有序集合类型

    3.6有序集合类型 3.6.1介绍 在集合类型基础上,为集合中每个元素都关联了一个分数,故可以获得 分数最高(最低)的前N个元素,可以获得指定范围内的元素等 有序集合中每个元素不同,但它们的分数却可以 ...

  9. 发布网站配置IIS(把网上找到的解决方法综合了一下)

    1.由于权限不足而无法读取配置文件,无法访问请求的页面(参考网址:http://blog.csdn.net/yinjingjing198808/article/details/7185453) 2.处 ...

  10. refine OpenRefine 3.0

    refine 英[rɪˈfaɪn] 锐烦嗯 美[rɪˈfaɪn] vt. 提炼; 改善; 使高雅; == explore 英 [ɪkˈsplɔ:(r)] 一颗四普罗 美 [ɪkˈsplɔr] vi.勘 ...