spring boot入门教程——Spring Boot快速入门指…
2019-05-08 07:29:36来源:博客园 阅读 ()
Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运行Jar包。
传统的Spring应用程序需要配置大量的XML文件才能运行,而使用Spring Boot只需极少的配置,就可以快速获得一个正常运行的Spring应用程序,而这些配置使用的都是注解的形式,不需要再配置XML。
与Go语言的应用不同,我们知道所有的Java Web应用都必须放在servlet容器(不是像docker容器的那种容器),如Tomcat、Jetty等。Servlet容器被定位为托管web应用程序的高可用组件。
使用Java构建微服务并发布到Kubernetes平台
Java作为多年的编程语言届的No.1(使用人数最多,最流行),使用它来构建微服务的人也不计其数,Java的微服务框架Spring中的Spring Boot和Spring Cloud已成为当前最流行的微服务框架。
下面是Sping技术栈所包含的技术框架图。
当然如果在Kubernetes中运行Java语言构建的微服务应用,我们不会使用上图中所有的技术,本节将主要讲解如何使用Spring Boot构建微服务应用。
Spring的基本原理
Spring是一套Java开发框架,框架的作用就是为了减少代码的冗余和模块之间的偶尔,使代码逻辑更加清晰,主要是用了AOP(Aspect Oriented Programming,面向切面编程)和IoC(Inversion of Control,控制反转)容器的思想,其中AOP是利用了Java的反射机制实现的。为了便于理解AOP可以参考一个简单的Spring的AOP例子。
准备环境
在开始Spring Boot开发之前,需要先确认您的电脑上已经有以下环境:
- JDK8
- Maven3.0+
- Intellij IDEA
JDK最好使用JDK8版本,Maven和IDEA的安装都十分简单,Maven的仓库配置有必要说一下。
配置Maven
在安装好Maven之后,默认的~/.m2
目录下是没有maven仓库配置文件settings.xml
的,默认使用的是官方的仓库,访问速度会非常慢,我们需要配置下国内的仓库。
创建~/.m2/settings.xml
文件,文件内容如下:
1 <?xml version="1.0"?> 2 <settings> 3 <mirrors> 4 <mirror> 5 <id>alimaven</id> 6 <name>aliyun maven</name> 7 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 8 <mirrorOf>central</mirrorOf> 9 </mirror> 10 </mirrors> 11 <profiles> 12 <profile> 13 <id>nexus</id> 14 <repositories> 15 <repository> 16 <id>nexus</id> 17 <name>local private nexus</name> 18 <url>http://maven.oschina.net/content/groups/public/</url> 19 <releases> 20 <enabled>true</enabled> 21 </releases> 22 <snapshots> 23 <enabled>false</enabled> 24 </snapshots> 25 </repository> 26 </repositories> 27 28 <pluginRepositories> 29 <pluginRepository> 30 <id>nexus</id> 31 <name>local private nexus</name> 32 <url>http://maven.oschina.net/content/groups/public/</url> 33 <releases> 34 <enabled>true</enabled> 35 </releases> 36 <snapshots> 37 <enabled>false</enabled> 38 </snapshots> 39 </pluginRepository> 40 </pluginRepositories> 41 </profile></profiles> 42 </settings>
其中使用的是阿里云的mirror,国内的下载速度非常快。
创建第一个Spring Boot应用
我们可以使用以下两种方式创建Spring Boot应用:
- springboot
- maven
使用springboot命令创建Spring Boot应用
首先需要安装springboot
命令行工具。
1 brew tap pivotal/tap 2 brew install springboot
使用下面的命令创建应用。
spring init --build maven --groupId com.example --version 0.0.1-SNAPSHOT --java-version 1.8 --dependencies web --name myproject myproject
--build
使用maven编译或者是gradle--groupId
和--version
与maven的pom.xml
中的设置对应--dependencies
可以指定多个,如web
、jpa
、security
等starter
执行上述命令后,将创建如下的目录结构:
1 . 2 └── myproject 3 ├── mvnw 4 ├── mvnw.cmd 5 ├── pom.xml 6 └── src 7 ├── main 8 │ ├── java 9 │ │ └── com 10 │ │ └── example 11 │ │ └── myproject 12 │ │ └── MyprojectApplication.java 13 │ └── resources 14 │ ├── application.properties 15 │ ├── static 16 │ └── templates 17 └── test 18 └── java 19 └── com 20 └── example 21 └── myproject 22 └── MyprojectApplicationTests.java 23 24 15 directories, 6 files
运行默认的示例应用。
1 mvn spring-boot:run
第一次运行需要下载依赖包所以会比较耗费时间,以后每次编译运行速度就会很快。
在浏览器中访问localhost:8080将看到如下输出:
1 Whitelabel Error Page 2 This application has no explicit mapping for /error, so you are seeing this as a fallback. 3 4 Mon Mar 12 16:26:42 CST 2018 5 There was an unexpected error (type=Not Found, status=404). 6 No message available
使用Maven创建Spring Boot应用
使用Maven创建Spring Boot应用需要执行以下步骤:
- 创建Maven工程所需的
pom.xml
文件 - 生成Maven工程
- 编译打包发布
创建pom.xml
为Maven项目构建创建pom.xml
文件,内容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.example</groupId> 7 <artifactId>myproject</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 10 <parent> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-parent</artifactId> 13 <version>1.4.1.BUILD-SNAPSHOT</version> 14 </parent> 15 16 <repositories> 17 <repository> 18 <id>spring-snapshots</id> 19 <url>http://repo.spring.io/snapshot</url> 20 <snapshots><enabled>true</enabled></snapshots> 21 </repository> 22 <repository> 23 <id>spring-milestones</id> 24 <url>http://repo.spring.io/milestone</url> 25 </repository> 26 </repositories> 27 <pluginRepositories> 28 <pluginRepository> 29 <id>spring-snapshots</id> 30 <url>http://repo.spring.io/snapshot</url> 31 </pluginRepository> 32 <pluginRepository> 33 <id>spring-milestones</id> 34 <url>http://repo.spring.io/milestone</url> 35 </pluginRepository> 36 </pluginRepositories> 37 <!-- 添加classpath依赖 --> 38 <dependencies> 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-starter-web</artifactId> 42 </dependency> 43 <!-- 开发者工具,当classpath下有文件更新自动触发应用重启 --> 44 <dependency> 45 <groupId>org.springframework.boot</groupId> 46 <artifactId>spring-boot-devtools</artifactId> 47 <optional>true</optional> 48 </dependency> 49 </dependencies> 50 <!-- maven编译插件,用于创建可执行jar包 --> 51 <build> 52 <plugins> 53 <plugin> 54 <groupId>org.springframework.boot</groupId> 55 <artifactId>spring-boot-maven-plugin</artifactId> 56 </plugin> 57 </plugins> 58 </build> 59 </project>
现在执行mvn dependency:tree
可以看到项目中的依赖关系。
1 com.example:myproject:jar:0.0.1-SNAPSHOT 2 \- org.springframework.boot:spring-boot-starter-web:jar:1.4.1.BUILD-SNAPSHOT:compile 3 +- org.springframework.boot:spring-boot-starter:jar:1.4.1.BUILD-SNAPSHOT:compile 4 | +- org.springframework.boot:spring-boot:jar:1.4.1.BUILD-SNAPSHOT:compile 5 | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.4.1.BUILD-SNAPSHOT:compile 6 | +- org.springframework.boot:spring-boot-starter-logging:jar:1.4.1.BUILD-SNAPSHOT:compile 7 | | +- ch.qos.logback:logback-classic:jar:1.1.7:compile 8 | | | +- ch.qos.logback:logback-core:jar:1.1.7:compile 9 | | | \- org.slf4j:slf4j-api:jar:1.7.21:compile 10 | | +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile 11 | | +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile 12 | | \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile 13 | +- org.springframework:spring-core:jar:4.3.3.RELEASE:compile 14 | \- org.yaml:snakeyaml:jar:1.17:runtime 15 +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.4.1.BUILD-SNAPSHOT:compile 16 | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.5:compile 17 | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.5:compile 18 | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.5:compile 19 +- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile 20 | +- javax.validation:validation-api:jar:1.1.0.Final:compile 21 | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile 22 | \- com.fasterxml:classmate:jar:1.3.1:compile 23 +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.3:compile 24 | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.3:compile 25 | \- com.fasterxml.jackson.core:jackson-core:jar:2.8.3:compile 26 +- org.springframework:spring-web:jar:4.3.3.RELEASE:compile 27 | +- org.springframework:spring-aop:jar:4.3.3.RELEASE:compile 28 | +- org.springframework:spring-beans:jar:4.3.3.RELEASE:compile 29 | \- org.springframework:spring-context:jar:4.3.3.RELEASE:compile 30 \- org.springframework:spring-webmvc:jar:4.3.3.RELEASE:compile 31 \- org.springframework:spring-expression:jar:4.3.3.RELEASE:compile
这其中包括Tomcat web服务器和Spring Boot自身。
Spring Boot 推荐的基础 POM 文件
所有这些 POM 依赖的好处在于为开发 Spring 应用提供了一个良好的基础。Spring Boot 所选择的第三方库是经过考虑的,是比较适合产品开发的选择。但是 Spring Boot 也提供了不同的选项,比如日志框架可以用 Logback 或 Log4j,应用服务器可以用 Tomcat 或 Jetty。
生成Maven工程
对于普通的Java项目或者Java Web项目可以使用下面的命令创建maven结构:
mvn archetype:generate -DgroupId=com.example -DartifactId=myproject -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
下表是以上参数的使用说明:
这将生成以下的目录结构:
1 . 2 └── myproject 3 ├── pom.xml 4 └── src 5 └── main 6 ├── resources 7 └── webapp 8 ├── WEB-INF 9 │ └── web.xml 10 └── index.jsp 11 12 6 directories, 3 files
对于Spring Boot项目,无法使用mvn
命令直接生成,需要手动创建目录:
1 mkdir -p src/main/java
创建示例代码
创建src/main/java/Example.java
文件内容如下:
1 import org.springframework.boot.*; 2 import org.springframework.boot.autoconfigure.*; 3 import org.springframework.stereotype.*; 4 import org.springframework.web.bind.annotation.*; 5 6 @RestController 7 @EnableAutoConfiguration 8 public class Example { 9 10 @RequestMapping("/") 11 String home() { 12 return "Hello World!"; 13 } 14 15 public static void main(String[] args) throws Exception { 16 SpringApplication.run(Example.class, args); 17 } 18 19 }
@RestController
注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。@EnableAutoConfiguration
注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web
添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用,并对Spring进行相应地设置。@RequestMapping
注解提供路由信息,它告诉Spring任何来自”/“路径的HTTP请求都应该被映射到home
方法。
注:@RestController
和@RequestMapping
是Spring MVC中的注解(它们不是Spring Boot的特定部分)。
编译和发布
运行该项目有以下两种方式。
方式1:直接mvn命令运行
1 mvn spring-boot:run
方式2:编译打包成可执行jar包
1 mvn package 2 java -jar target/myproject-0.0.1-SNAPSHOT.jar
不论使用哪种方式编译,访问localhost:8080可以看到web页面上显示Hello world!
。
在target
目录下,你应该还能看到一个很小的名为myproject-0.0.1-SNAPSHOT.jar.original
的文件,这是在Spring Boot重新打包前,Maven创建的原始jar文件。实际上可运行jar包中包含了这个小的jar包。
我有一个Java学习交流群:615741636,里面有很多的干货教程,有我这几年整理的Java学习手册,面试题,开发工具和PDF文档书籍,你可以自行去下载。
原文链接:https://www.cnblogs.com/zhanlaoshi/p/10818830.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash