我们用的是ideaIU-2018.1.6这个版本 然后配置的maven 3.3.9 JDK1.8.0_172 SpringBoot 1.5.9
-
maven设置
我们的maven的包路径是idea直接带的
我们打开maven的settings文件
我们给profiles加入jdk1.8的设置
-
实例演示
浏览器发送hello请求,服务器接收请求并处理,响应helloworld字符串
- 创建一个maven工程(jar工程)
我们看到创建成功的maven目录结构
我们点击“自动导入”,以后我们在pom文件中写入的依赖,idea就会帮我们自动导入依赖
这个就是创建的maven项目目录结构 - 导入spring boot 相关的依赖
springboot官网http://spring.io/ Spring Boot -->Quick Start 可以自动生成,但我们的版本比较低,我们手动添加以下内容到pom.xml
右下角自动添加了依赖
完成以后在External Libraties里面显示自动导入的依赖包 - 编写一个主程序(作用:启动一个SpringBoot应用)
在main/java下新建一个类com.david.HelloWorldMainApplication 在idea中,如果创建类的时候指定包名com.david,则会自动创建包
主程序已经创建好了,
但是此时我们必须要告诉编译器这是一个SpringBoot应用,也就是在public class之前加入注解@SpringBootApplication,加入注解后会自动添加引入的包import
它其实是说明标注一个主程序类,说明这是一个SpringBoot应用
然后我们在类中敲入psvm然后回车
其实就是idea提供的简写main方法(public static void main)psvm
添加代码SpringApplication.run(HelloWorldMainApplication.class,args);
参数是什么呢?第一个参数就是HelloWorldMainApplication.class ,其实就是类名,第二个参数就是args;
它的目的就是让Spring应用启动起来 - 编写相关的Controller、Service(不像Spring及SpringMVC那样需要其他的配置了)
在com.david包下右键,新建一个子包及类controller.HelloController
我们加入注解@Controller 然后会自动添加引入import
处理什么请求呢?我们写一个hello方法,我们要借助@RequestMapping注解来接收浏览器的/hello请求
我们想要浏览器输出Hello World!也需要借助@ResponseBody注解来给浏览器写数据 - 运行主程序测试
然后我们测试是否可以完成我们预想的操作
我们到HelloWorldMainApplication中在Idea界面中点击main方法左侧的运行按钮
我们看到SpringBoot应用在控制台就开始启动了
我们看到Tomcat在8080端口已经启动,我们并没有配置Tomcat啊
我们用浏览器访问一下http://localhost:8080,发现默认返回错误页面,我们先不管
我们接着想要让浏览器响应hello请求,我们就访问http://localhost:8080/hello,我们看到浏览器已经正确的相应了Hello World!
然后停止服务 - 简化部署
很方便吧,如果是以前我们需要将应用打成War包,然后部署到Tomcat下,没有相应的环境还需要配置
而SpringBoot应用不用打War包,在SpringBoot的官方网站上,有Getting Start下面有创建可以执行的jar包
现在官网更新,已经看不到了,其实就是将相应的插件导入到项目中
加入插件以后,无需在目标服务器安装Tomcat环境等等。
我们接下来开始打jar包,点击右边栏的Maven Projects
双击该项目生命周期中的package
打包过程中终端会显示信息,打完包的路径
我们在idea的左侧找target下面就是生成的jar包
我们可以Ctrl+c 复制该包到磁盘其他路径
然后cmd进入到相应复制该文件的路径下后用java -jar的命令直接执行该应用,即使目标服务器没有Tomcat环境也没关系
我们用浏览器像刚才一样访问http://localhost:8080/hello,发现同样会返回正确的Hello World!
我们用winrar打开这个jar包看一下
在BOOT-INF中有咱们写的classes和lib,classes下就是com.david.controller和HelloWorldMainApplication.class,com.david.controller下面有HelloController.class
而lib下面看到该jar包导入了非常多的jar包
这里看到打包的时候已经将嵌入式的tomcat打包到该jar包里,所以不需要目标服务器安装tomcat环境也可以运行