目录
概述
一、打开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
二、选择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。
在buildscript的dependencies中加入:
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’看错误日志。