Idea+Gradle构建Sring Boot 项目

本文详细介绍如何使用IntelliJ IDEA和Gradle从零开始搭建Spring Boot项目,并配置热部署插件springloaded,实现代码修改后的自动更新。此外还介绍了如何设置阿里云镜像仓库加速依赖下载,指定编译JDK版本,以及编写简单的RESTful API。

目录

 

概述

一、打开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,编写一个测试访问案例。自己用有道云笔记编辑的,结果粘贴过来图片不支持,黑人问号脸???

首先保证环境有:

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

 

二、选择Spring Initializr 

    --> 选择自己本机的jdk 

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

    --> 下一步

 

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

 

自定义更改后

 

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

 

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

 

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

 

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

 

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

 

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

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

 

 

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

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

 

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

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

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

 

选择gradle --> 点击下一步

 

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

 

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

十、打开项目目录

 

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

 

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

 

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

 

 

十二、build.Gradle配置

1.热部署插件

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

buildscriptdependencies中加入:

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

 

 

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

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

 

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

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

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

 

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

 

我们前面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/'}

 

3.指定编译jdk版本

//指定编译编译.java文件的jdk版本

sourceCompatibility = 1.8

//确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容

targetCompatibility = 1.8

// java编译的时候缺省状态下会因为中文字符而失败

[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'

十三、工程目录配置

1.目录结构

 

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

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

 

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

 

2 控制器的编写

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

 

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’看错误日志。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值