经过前面一篇文章Spring Boot实战系列《三》:Spring Boot 简介,我们已经知道了spring boot的大概情况。
在使用spring boot之前,最好先知道以下内容:
所用环境:
创建一个spring boot项目,常用以下两种方式:
1、创建maven项目
2、引入starters
3、创建主程序
4、启动运行项目
或者:
使用Spring Initializer快速创建Spring Boot项目。(开发时推荐)
入门只需要完成一个功能:
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;
打开IDEA。
webjars官网: https://www.webjars.org/ ,在里面选择好spring boot的jar包版本。
源码:
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
导入完成以后。
是用来启动spring boot应用,注意,注解是不能少的。
HelloWorldMainApplication.java:
是spring boot的主函数入口,里面有一个main()方法。是写好的。
源码:
/**
* @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
在创建好的java文件夹下写一个类:
包名+类名:com.zout.controller.HelloWorld
得HelloWorld.java。
源码:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
Service层暂时没用到。
运行HelloWorldMainApplication里面的main方法,spring boot就开始启动,然后在浏览器输 http://localhost:8080/hello , 即可访问。
假设在我们开发完成一个spring boot项目以后,难道还要像以前一样,打包成war包,然后上传到服务器,去服务器配置同样的运行环境,然后在部署嘛?
不是的,我们只需要使用一个插件,然后把项目打包成一个可执行的jar包,不要打war包,也不需要在服务器配置tomcat环境。
根据官网的:
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#getting-started-first-application-executable-jar 所写,
图示:
找到依赖的格式。然后复制到pom.xml中。
在pom.xml里面加入插件依赖:
org.springframework.boot
spring-boot-maven-plugin
然后找到项目名称:
双击运行package方法。
然后可以直接在项目下找到:
Ctrl+c即可复制出jar包。
运行项目的jar包:
我是复制到了桌面,然后查看一下桌面的路径。复制下来
ctrl+R调出cmd窗口:使用 java –jar xxx.jar
的形式运行jar包。
在服务器没有tomcat等环境下照样执行。
浏览器输入地址即可访问到我们的jar项目:
这样做,不需要服务器上拥有tomcat等环境,照样执行。只需要最基本的java环境即可部署项目,方便快捷。
解释:spring-boot-starter-parent 称为父项目:
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
他的父项目是:
org.springframework.boot
spring-boot-dependencies
1.5.9.RELEASE
../../spring-boot-dependencies
它来真正管理Spring Boot应用里面的所有依赖版本,可以看出我们引用的都是1.5.9版本的spring boot。
就是一个Springboot版本仲裁中心:是用来指定所有依赖的版本。
如果我们导入依赖默认是不需要写版本号的;(没有在dependencies里面管理的依赖自然需要声明版本号)。
其次:
spring-boot-starter-web:spring boot的场景启动器,
帮我们导入了web模块的相关的依赖,依赖的版本都是以父项目来指定仲裁。
org.springframework.boot
spring-boot-starter-web
称为启动器,
spring-boot-starter-web:
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。
一句话,springboot将所有的功能场景都抽取出来,做成一个个的starter(启动器),当我们引入这些相关场景的依赖,都会导入进来。
要用什么功能,就导入什么的场景启动器。
比如,我们导入spring-boot-starter-data-jdbc那么就是用来连接JDBC的依赖,自动导入进来,就可以和数据库交互了。
最后解释一下里面的一些注解:
在Spring boot中,注解使用非常频繁,通过使用注解可以有效的提供开发效率,让项目代码看起来更简洁。
主程序的入口类:
@SpringBootApplication 注解:
spring boot应用标注了某个类上,则说明这个类是springboot的主配置类,springboot就应该运行这个类的main方法来启动springboot应用。
@ResponseBody:表示该方法的返回结果直接写入HTTP response body中
比如:
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。
@SpringBootConfiguration注解:
标注当前类是配置类,是Springboot的配置类。