开发第一个Spring Boot应用程序 — HelloWorld
用java开发一个简单的“hello world”web应用程序来展示Spring Boot的特点,我们将使用大多数IDE都支持的maven去构建这个工程
1、检查是否安装了合适的java版本和maven版本
2、创建POM文件
首先需要创建一个pom文件用于构建工程,此时可以先用文本编辑器编辑
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.BUILD-SNAPSHOT</version> </parent> <!-- Additional lines to be added here... --> <!-- (you don't need this if you are using a .RELEASE version) --> <repositories> <repository> <id>spring-snapshots</id> <url>http://repo.spring.io/snapshot</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>http://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories> </project>这个文件能够让你进行构建,你可以使用mvn-package进行检查(如果提示jar will be empty - no content was marked for inclusion!,忽略这个警告就行)
至此,你可以将工程导入IDE中,此处我们使用文本编辑器往下继续
3、添加classpath依赖
SpringBoot提供了若干个“starters”可以方便的添加jar包到classpath。我们在pom文件的parent部分已经用了spring-boot-starter-parent,它是一个提供了maven默认功能的特殊的starter,同时它也提供了一个“dependency-management
”部分
以便可以忽略blessed依赖中的version标签
其他starter仅仅提供了特定应用类型下的一些依赖,因为我们开发的是一个web程序,我们也将会添加spring-boot-starter-web
的依赖,在这之前,让我们看看我们现在有什么
mvn dependency:tree
命令展示了一个你工程的依赖树,你可以看到spring-boot-starter-parent没有提供什么依赖,那么现在
我们来编辑一下pom.xml,把spring-boot-starter-web依赖加进去,放到parent部分的下面
再次执行mvn dependency:tree,会发现已经多了其他的依赖,包括tomcat web server和Spring Boot自己。
4、写代码
为了完成应用我们需要写java代码。Maven默认从src/main/java路径下编译java文件,因此需要创建相关目录,并添加文件
src/main/java/Example.java
import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); } }此处没有太多代码,具体让我们一步一步来讲解
4.1、@RestController和@RequestMapping注释
@RestConstroller注释标识一个类有特殊角色,在这里,就是告诉spring这个类是一个web@Controller,有请求来的时候spring就会酌情考虑
@RequestMapping注释标识的是通道信息,它告诉spring,任何一个路径是“/”的http请求都应该映射到home方法,@RestController注释告诉spring
把结果以字符串的形式直接返回给请求者
这两个注释都是SpringMvc的注释(在SpringBoot这里并没有什么特殊的)
4.2、@EnableAutoConfiguration注释
第二个类级别的注释是@EnableAutoConfiguration,这个注释告诉spring进行相应配置,这个相应是根据上面配置的spring-boot-starter-web
告诉了spring我们在开发一个web程序,spring进行相应配置即可
4.3、main方法
main方法历来是约定了一个程序入口,这里我们在main方法会唤起执行SpringApplication
,SpringApplication
会启动我们的应用,启动自动装配的tomcat server
5、执行程序
此时我们的应用就可以工作了。因为我们引入过spring-boot-starter-parent,它是一个可以运行的目标,我们可以在工程根目录下使用mvn spring-boot:run启动应用
此时如果在浏览器中访问localhost:8080 ,就可以看到输出hello world
按ctrl+c可以退出应用
6、制作一个可执行的jar
可以制作一个自执行的jar,制作jar需要在pom.xml中加入spring-boot-maven-plugin,在dependencies下面加入如下内容
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
保存pom.xml,然后执行mvn package命令
这个时候去target文件夹中查看就能够看到myproject-0.0.1-SNAPSHOT.jar,此时如果想看看jar中机构,可以执行
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
能够在target目录下看到一个更小版的myproject-0.0.1-SNAPSHOT.jar.original,这是SrpingBoot二次打包前maven创建的
可以使用java -jar命令让应用跑起来