Spring Boot 快速入门(Spring Boot 2.0及以上)php
如何使用Spring Boot 快速入门 快速建立HelloWorld 项目,主要涉及到java
1.建立(生成)一个Spring Boot标准项目nginx
2.配置Pom.xml文件git
3.编写示例代码github
4.编写测试代码web
5.运行和调试spring
6.打包发布docker
本文源码下载 Github-spring-boot-study-hellowordjson
Spring Boot 是Spring 家族成员之一c#
Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。下面摘自spring boot中文文档
如下谈到我的认为的几点
1.入门门槛低,只要懂程序的java、c#、php、js都能快速入门
2.强大的生态,几乎没有什么功能是须要本身从头开始开发
3.部署方便,独立服务器也好、云部署也好、docker也好都很是方便
通常SpringBoot开发的步骤包括
1.生成一个Spring Boot项目
2.配置Pom.xml
3.编辑代码
4.编写测试代码
5.运行
6.打包发布
这里咱们介绍 在浏览器中实现一个 http://localhost:8999/hello/say web程序。这里使用IntelliJ IDEA 做为IDE环境来编译。也可使用其余IDE。
咱们通常采用从IDEA建立Spring Boot项目,见1.2.
2)选择构建工具 Maven Project、Java、Spring Boot 版本 2.1.4 (注意这里文档版本是2.1.4,但在下面的实践中2.1.4本地的mvn有问题,后面换成了2.0.0) 、填写Group、Articfact 及一些工程基本信息,可参考下图所示:
如上图一些英文的含义
groupId:groupId分为几个字段,例如com.companyname,前面的com叫【域】,后面的是你本身起的域名。这里是 com.fishpro
artifactId:artifactId通常是项目名或者模块名。这里是 springstudy
Dependencies:依赖,输入web,选择web
例如公司名称:baidu,项目名 peach 那么 groupId=com.baidu artifactId=peach 最终在java项目的基本包名为 com.baidu.peach。固然groupId也能够是com.baidu.look 这种形式,彻底有开发者本身定义。
本示例项目 groupId=com.fishpro artifactId=springstudy
3)点击绿色按钮【Generate Project】生成项目,浏览器则自动下载项目,我命名的是springhello,那么下载的是springhello.zip
4)以下图,下载的位maven项目结构的java项目,使用idea开发工具打开这个文件夹,则会自动加载maven项目。
用 IDEA 打开(open) 文件后,idea自动加载项目的依赖,请稍等片刻,通常在2到5分钟,这取决于您的网络和系统性能。
也可使用 功能,导入文件夹为Maven项目,一路点击【next】便可。
5)IDEA 导入Spring Boot 的项目结构,截图以下:
项目结构简单说明
src/main/java 下是主程序的java代码存放处
src/resource 是资源文件包括图片、Css、Javascript等静态文件和配置文件yml或properties文件
src/test/java 测试代码
1 .idea #IDEA 软件特有的文件夹,隐藏文件 2 .mvn #Maven项目特有的文件,隐藏文件 3 src #存放源码包括了java代码和配置文件和资源文件 4 main #java代码 5 java 6 com 7 pringbook 8 SpringstudyApplication #启动类java文件 9 resource #资源文件包括静态文件 10 application.properties #项目的配置文件,好比配置服务器端口等 11 test #测试文件夹 12 mvnw #maven项目辅助文件,自动生成 13 mvnw.cmd #maven项目辅助文件,自动生成 14 pom.xml #maven项目配置文件,相似于C#的web.config 15 study.iml #iml 是IDEA软件的项目标识文件,通常是自动建立的 16 Externel Libraries #lib文件,这个不用管,是自动的
使用IDEA建立项目,其实也是从 https://start.spring.io/ 建立,只是更为方便,咱们通常采用从IDEA建立Spring Boot项目。
注意mac和windows的IDEA建立过程是同样的。
1)File>New>Project,以下图选择Spring Initializr 而后点击 【Next】下一步
2)填写GroupId(包名)、Artifact(项目名) 便可。
groupId=com.fishpro
artifactId=springstudy
3)选择依赖,咱们选择Web
注意若是生成项目的时候没有设置Dependencies,选择web,那么这里要在Pom.xml中设置,Pom.xml设置依赖也很是的简单,直接把 <dependency></dependency>的节点拷贝到pom依赖节点中便可。
Pom.xml属于maven项目结构的项目依赖项配置文件,主要管理第三方包的引用。
默认项目配置了spring-boot-starter和spring-boot-starter-test ,配置以下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
由于示例项目是web项目因此须要引入web模块,在dependency下增长节点,增长后以下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
注意,若是IDEA没有自动导入,那么前往右下角,点击【Import Changes】
有的时候会出问题了!
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加载spring-boot-starter-web:jar,这个应该是mvn管理器加载问题。去掉里面依赖
答:spring boot 2.1.4的mvn有问题,改为2.0.0就行了。固然这多是其余缘由,我使用IDEA建立的项目就没有这个问题。
一般,咱们使用三层结构来编写。
应用层(Controller)、服务层(Service)、数据层(Dao)
咱们也增长对应的包目录。
1)在本示例中,右键springstudy包名,新建包名 controller (注意通常是消息)
2)在controller下新建HelloWorldController.java (注意首字母大写)
3)在HelloWorldController中增长java代码
@RestController @RequestMapping("/hello") public class HelloWorldController { @RequestMapping("/say") public String say(){ return "Hello World"; } }
3.3 更改Web端口
因个人系统端口默认8080倍nginx占领了,我把本次项目的启动端口改成8999
在 resources\application.properties 中设置(注意有的网络教程中是 application.yml 其实这是另外一种配置文件格式,就想json和xml 只是格式不一样,功能做用同样)
#设置端口号 server.port=8999
测试代码在 src\test\java下面编写
1)在本示例中,右键 src\test\java\com\fishpro\springstudy包名,新建包名 controller (注意通常是消息)
2)在controller下新建HelloWorldControllerTests.java (注意对应于main下,通常后缀Tests)
3)在HelloWorldControllerTests中增长java代码
package com.fishpro.springstudy.controller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @RunWith(SpringRunner.class) @SpringBootTest public class HelloWorldControllerTests { private MockMvc mockMvc; @Before public void setUp() throws Exception { mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build(); } @Test public void getHello() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/hello/say").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } }
点击右上角,绿色运行三角形按钮,启动运行,或点击它旁边的爬虫按钮,进行调试。
或者点击菜单
Run>Run 'SpringstudyApplication'
Run>Debug 'SpringstudyApplication'
浏览器输入 http://localhost:8999/hello/say
右键HelloWorldControllerTests.java 选择Run 'HelloWorldControllerTests' with Coverage
一般咱们一jar方式打包发布,war方式用于单独的发布到已有的tomcat web服务器中,之后的实践中再讲。
1)选择 View> Tool Windows>Terminal
2)输入命令
mvn clean mvn install
在根目录下有个target 文件夹,
3)模拟服务器环境,运行jar文件,输入命令,后则能够在浏览器中获得结果。
java -jar springstudy-0.0.1-SNAPSHOT.jar
总之,Spring Boot是一个优秀的实战型框架,他既简单又强大。
1.Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar:2.1.4.RELEASE less... (⌘F1)
Inspects a Maven model for resolution problems.
未能加载spring-boot-starter-web:jar,这个应该是mvn管理器加载问题。
2.端口问题
默认是8080端口,若是端口被占用了(例如mac的nginx默认是8080),须要修改,那么在 resources\application.properties中设置
#设置端口号 server.port=8999
本文源码下载Github-spring-boot-study-helloword