SpringBoot系列—Hello World(一)
个人博客:haichenyi.com。感谢关注
终于要正式开始了java后台之路,虽然,之前断断续续的看过过黑马的java web视频,但是,都是好几年前的视频,很老了,感觉用处比较大的就是MySQL数据库操作,之前也写过几篇关于MySQL数据库操作的博客。目前,java后台最火的框架就属Spring Boot了。它是spring家族的衍生框架,并不是加强某个功能,它是为了简化配置,提高开发效率。
Spring Boot概要
Spring Boot 介绍
随着动态语言的流行(Ruby,Node.js等等),java作为静态语言,他的开发显得格外的笨重;繁多的配置、低效的开发效率、复杂的部署流程以及第三方技术整合难度大。
在上述环境下,Spring Boot由此诞生,它的设计是为了尽快的启动和运行。它使用"习惯优于配置"(就是Spring Boot初始化了大量的配置,让你可以无需配置就能直接运行,当然,你也可以更改)的理念让你的项目快速的运行起来。并且,使用Spring Boot可以让你很容易创建一个独立运行(运行jar,内嵌servlet容器即Tomcat)、准生产力强的基于spring的项目。
Spring Boot 优点
- 快速构建spring项目
- 无需依赖外部servlet容器即Tomcat,应用无需打成WAR包;项目可以打成Jar包直接运行
- 提供一系列的 start pom来简化maven的依赖加载
- 无需配置XML,开箱即用,简化开发,同时也可以修改默认值来满足特定需求
- Spring Boot并不是对Spring功能上的加强,而是提供了一种快速使用Spring的方式
- 极大的提高了开发和部署效率
Spring Boot 入门开发
环境要求
每一个版本的Spring Boot,对系统的环境要求都不一样。我这里用的Spring Boot 2.1.7版本,它需要的
- jdk8,兼容12
- Maven 3.3+
修改Maven配置文件
首先,你需要先下载Maven,然后安装。找到安装目录下的config文件夹,点进去找到setting.xml配置文件,进行如下修改
<!--开始处更改下载依赖的存放路径, 以下目录需要已经创建-->
<localRepository>D:\apache-maven-3.6.1\repository</localRepository>
<!--在 mirrors 标签下 添加阿里云maven私服库-->
<mirrors>
<id>nexus-aliyun</id>
<name>nexus-aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirrors>
<!--在 profiles 标签下指定jdk版本-->
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
修改IDEA配置
IDEA配置.png如上图,我们打开IDEA的setting界面,找到MAVEN,在Maven Home Directory这一栏选择,我们刚才Maven安装的路径,当这一栏选好之后,第三栏的本地仓库路径会自动修改,然后,我们修改第二栏,选择我们上面修改的setting.xml文件。这样修改完成之后,我们maven项目在线依赖的库都存放在我们自己定义的存放文件夹下面。
创建SpringBoot项目
这里创建的是Maven项目,然后嵌入SpringBoot框架,这样你就不会因为直接创建SpringBoot项目生成的文件不知道是干什么用的造成的困惑。创建Maven项目之后的项目结构,如下图:
Maven项目结构图.png如上图,有三个文件夹和一个pom.xml文件。
- java文件夹:存放java代码
- resources文件夹:存放资源文件
- test文件夹:单元测试
- pom.xml:依赖库
Maven项目会自动帮我们创建pom.xml文件,不用我们手动创建,我们先在pom.xml文件下添加如下依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
关于这个我想说的就是,spring-boot-starter-parent是一个父级依赖,它是一个特殊的starter,这个依赖提供了常用的SpringBoot依赖库,使用它之后,我们SpringBoot常用库就不需要指定Version,这样,我们就避免了冲突,不兼容等问题。之前Android项目总是碰到依赖包冲突,这一点SpringBoot很nice。
添加完成这两个之后,我们就可以创建controller,也就是接口了。
package com.haichenyi.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public String hello() {
return "hello world!";
}
}
我这里类用@RestController注解标明,你也可以用@Controller,当你用@Controller的时候,你的方法上面还要加另外一个注解@ResponseBody。
再就是方法名称,在你的方法上面加@RequestMapping,里面的value值就是你的接口名称,后面的method就是你需要访问接口的方式。
再就是最后一步,创建一个引导类,它的主要作用就是启动我们的SpringBoot项目。
package com.haichenyi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
到这里,我们就完成了,我们最后看一下项目结构图:
项目结构图.pngPS:在这里,我们需要注意的是我们这个启动类最好放在最外层的包下面,因为这个启动类在启动的时候,会加载它这个包下面及其所有子包下面所有组件到spring容器中统一管理,你如果把这个启动类写在其它包下面,有可能就加载不到有的组件。
启动项目,不用我们手动部署到Tomcat,我们直接点击这个启动类的main方法,左边的启动按钮,run application就可以了。
最后,请求接口,因为,我这里定义的方式是post请求,所以,不能直接浏览器访问,你也可以把这个方式去掉,就可以了。
//http协议+ip+port+接口名
http://localhost:8080/hello
项目打jar包
添加依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
选择项目右边的Maven—moudle名称—Lifecycle—package—run maven build即可。如下图:
打jar包.png jar包路径.png然后,在控制台找到这个jar的路径,在我们的DOS命令界面用如下命令运行,即可:
java -jar 刚才打好的jar包全名称包括后缀名