目录

 

概述

一、打开idea --> file --> new project

二、选择Spring Initializr 

三、填写并选择相关项目信息 (用过maven的应该都知道是啥意思吧)--> 选择下一步

四、选择Spring Boot Version和依赖(就是spring boot版本最新的是2.1v) --> 勾选web依赖 --> 下一步

五、填上项目名 --> 下一步(finish)

六、选择新窗口打开新创建的项目

七、此时,你的项目根本无法构建

八、这步很关键,直接决定你的成败

九、如果第八步已经导入了Gradle配置,请跳过本步

十、打开项目目录

十一、启动项目:右键这个main方法 --> run来启动项目

十一、至此,说明项目启动成功

十二、build.Gradle配置

1.热部署插件

2.配置阿里云镜像仓库

3.指定编译jdk版本

十三、工程目录配置

1.目录结构

2 控制器的编写

3 运行应用


概述

最近自己参考博客搭了一个SpringBoot项目,感觉Spring boot才是人类的希望呀(哈哈哈),本文参考其他网友博文详细记录了Spring Boot环境搭建的过程,包含生成基本的项目结构,设置热部署插件springloaded,生成war包发布到外部的tomcat,编写一个测试访问案例。自己用有道云笔记编辑的,结果粘贴过来图片不支持,黑人问号脸???

首先保证环境有:

  • Gradle 3.5+ (我用的4.0)
  • JDK1.8+(我用的1.8)
  • Idea(我用的2017.1)【破解教程之前写过,供各位参考:】

一、打开idea --> file --> new project

gradle 和 spring boot 版本对应 gradle配置springboot_gradle

 

二、选择Spring Initializr 

    --> 选择自己本机的jdk 

    --> Initializr选择Default,就是:https://start.spring.io/

    --> 下一步

gradle 和 spring boot 版本对应 gradle配置springboot_spring_02

 

三、填写并选择相关项目信息 (用过maven的应该都知道是啥意思吧)--> 选择下一步

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_03

 

自定义更改后

gradle 和 spring boot 版本对应 gradle配置springboot_spring_04

 

四、选择Spring Boot Version和依赖(就是spring boot版本最新的是2.1v) --> 勾选web依赖 --> 下一步

gradle 和 spring boot 版本对应 gradle配置springboot_java_05

 

五、填上项目名 --> 下一步(finish)

gradle 和 spring boot 版本对应 gradle配置springboot_idea_06

 

六、选择新窗口打开新创建的项目

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_07

 

七、此时,你的项目根本无法构建

gradle 和 spring boot 版本对应 gradle配置springboot_java_08

 

当你按照上图:右键build.gradle --> run build,会报如下错误

gradle 和 spring boot 版本对应 gradle配置springboot_springBoot_09

 

八、这步很关键,直接决定你的成败

一定要点击这个东西,千万不能关掉,如果你手贱关掉了,请在第九步查看如何引入Gradle配置

gradle 和 spring boot 版本对应 gradle配置springboot_spring_10

 

gradle 和 spring boot 版本对应 gradle配置springboot_java_11

 

如果你点击了这个连接会看到如下页面:

请选择本地gradle --> 点击ok

gradle 和 spring boot 版本对应 gradle配置springboot_java_12

 

九、如果第八步已经导入了Gradle配置,请跳过本步

本步是在创建项目后没有导入gradle配置的情况下手动导入gradle配置,

首先,把刚刚创建的项目重新导入一遍

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_13

 

gradle 和 spring boot 版本对应 gradle配置springboot_java_14

选择gradle --> 点击下一步

gradle 和 spring boot 版本对应 gradle配置springboot_java_15

 

请选择本地gradle --> 点击finish

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_16

 

至于要打开的窗口位置,这个随心,可以在当前窗口打开,也可以在新窗口打开,随心

十、打开项目目录

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_17

 

十一、启动项目:右键这个main方法 --> run来启动项目

gradle 和 spring boot 版本对应 gradle配置springboot_springBoot_18

 

或者点击main方法前面的播放按钮,选择你想要的启动方式

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_19

 

十一、至此,说明项目启动成功

 

gradle 和 spring boot 版本对应 gradle配置springboot_idea_20

gradle 和 spring boot 版本对应 gradle配置springboot_java_21

gradle 和 spring boot 版本对应 gradle配置springboot_spring_22

 

十二、build.Gradle配置

1.热部署插件

热部署是指一旦项目run起来,我们就不需要再次run了,只需要编译修改的文件或者编译整个工程,修改就会自动部署,是不是很方便?这里还是用spring的springloaded。 

在buildscript的dependencies中加入:

classpath 'org.springframework:springloaded:1.2.7.RELEASE'

之后代码有修改只需要编译修改了的代码(单个文件:菜单栏build/recompile….,多个就要在左边的Project中选中修改的文件,右键,rebuild,或者直接整个工程重新编译)就行了。

gradle 和 spring boot 版本对应 gradle配置springboot_springBoot_23

更改build.gradle配置文件后,右下角会有如下提示

gradle 和 spring boot 版本对应 gradle配置springboot_idea_24

 

表示gradle文件已改变,是否需要导入新的依赖,这里我们点Enable Auto-Import,这个选项的意思是只要你改动了build.gradle文件,就会自动刷新依赖。

注意:下次重启Intellij可能会出现下图的提示

那就点Create Default Context,创建默认的Context

gradle 和 spring boot 版本对应 gradle配置springboot_idea_25

 

当配置了自动导入,settings中gradle也会开启自动导入

gradle 和 spring boot 版本对应 gradle配置springboot_java_26

 

我们前面Packaging勾选war产生的效果就是

 

  • 1.增加了apply plugin: 'war',war插件 
  • 2.providedRuntime('org.springframework.boot:spring-boot-starter-tomcat'),表示代码在运行时需要的依赖,providedRuntime是指依赖的Jar包不会被加到War包里面。

2.配置阿里云镜像仓库

将原来的mavenCentral()直接替换掉或者将maven(...)放到mavenCentral()的前面

(默认是从上往下寻找,所以要放到mavenCentral的前面,如果加在mavenCentral后面,等同于没加)

maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'}

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_27

gradle 和 spring boot 版本对应 gradle配置springboot_java_28

 

3.指定编译jdk版本

//指定编译编译.java文件的jdk版本
sourceCompatibility = 1.8
//确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容
targetCompatibility = 1.8
// java编译的时候缺省状态下会因为中文字符而失败
[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'

十三、工程目录配置

1.目录结构

gradle 和 spring boot 版本对应 gradle配置springboot_java_29

 

Packaging勾选war还有一个效果就是会生成一个ServletInitializer。因为项目要部署到tomcat,启动类必须继承自SpringBootServletInitializer,主要起到web.xml的作用。 

注意:这里我们解释下@SpringBootApplication

 

@SpringBootApplication等价于@Configuration、@EnableAutoConfiguration、@ComponentScan,查看SpringBootApplication注解可以发现@ComponentScan并没有添加任何的参数,它会自动扫描工程里所有的@Component, @Service, @Repository, @Controller并把它们注册为Spring Beans。

 

2 控制器的编写

按如图所示包结构新建包和类。

gradle 和 spring boot 版本对应 gradle配置springboot_springBoot_30

 

HelloController

@RestController("/hello") 
public class HelloController { 

    private HelloWorld helloWorld; 

    public HelloController(HelloWorld helloWorld) 
    { 
    this.helloWorld = helloWorld; 
    } 
    @GetMapping 
    public String hello() 
    { 
      return helloWorld.hello();
 }

 }

 

HelloWorld

@Component public class HelloWorld { public String hello() { return "Hello World!"; } }

这里我们的HelloWorld或HelloController都没有@AutoWired注解(@Autowired注释可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过@Autowired的使用来消除set,get方法)。因为Spring的文档写到了如果只有一个构造函数,就可以省略这个注释。如果有多个,则要加上。

@RestController("/hello")
public class HelloController { 

    private HelloWorld helloWorld;
 
@AutoWired 
public HelloController(HelloWorld helloWorld) 
    { 
        this.helloWorld = helloWorld; 

    } 
... }



@AutoWired会寻找和构造函数参数类型匹配的bean,把它们作为传入参数来创建HelloController。

@Component泛指组件,一般用于普通POJO,当组件不好归类的时候,也可以使用这个注解进行标注。 

@Service用于标注业务层组件

@RestController用于标注控制层组件。@RestController同时包含了@Controller、@ResponseBody。

@GetMapping也是一个组合注解,相当于@RequestMapping(method = RequestMethod.GET)的缩写。 类似的还有@PostMapping、@PutMapping、@DeleteMapping。

3 运行应用

如图所示,打开右边的gradle,找到bootRun运行。跑起来后,下面的run工具窗口会一直显示在运行。此时打开浏览器,输入http://localhost:8080/hello,就可以看到Hello World!了。如果运行出错,则在Terminal工具窗口输入`./gradlew bootRun’看错误日志。

gradle 和 spring boot 版本对应 gradle配置springboot_gradle_31

 

 

gradle 和 spring boot 版本对应 gradle配置springboot_spring_32