为什么80%的码农都做不了架构师?>>>   

我们来用spring boot开发一个简单的“hello world”web应用,使用maven构建。开始之前,先检查你的java与maven的版本,看是否是spring boot1.3支持的版本:

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00)
Maven home: /opt/apache-maven-3.2.3
Java version: 1.8.0_45, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_45/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-53-generic", arch: "amd64", family: "unix"

使用eclipse创建一个普通的maven工程

packaging为jar,并编写如下pom.xml:

<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>net.scanner</groupId><artifactId>hello_world</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.0.BUILD-SNAPSHOT</version></parent><!-- 如果你使用的是RELEASE版本,就不需要下面的配置 --><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>

添加依赖

示例中,我们在pom.xml的parent部分使用 spring-boot-starter-parent。spring-boot-starter-parent是个重要的,默认的父工程,它提供了dependency-management部分。如果我们这时候执行:

$ mvn dependency:tree

你可以看到spring-boot-starter-parent,它并没有提供什么依赖jar包。如果我们向pom.xml添加spring-boot-starter-web依赖(在parent这部分之后):

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

你再次运行:

$ mvn dependency:tree

那这时候日志输出就不一样了!

原来tomcat是嵌入方式使用的!

写点源代码吧!

在src/main/java目录,我们创建一个java源文件:

package hello_world;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!";}public static void main(String[] args) {SpringApplication.run(Example.class, args);}
}

@RestController是spring4.0中的注解:RestController表明该类的每个方法返回对象而不是视图,它实际就是@Controller和@ResponseBody混合使用的简写方法。@RequestMapping就不解释了,springmvc3中就有了!@EnableAutoConfiguration注解是类级别的注解,它的意思就是开启自动配置,该注解会告知Boot要采用一种特定的方式来对应用进行配置。这种方法会将其他样板式的配置均假设为框架默认的约定,当然它是基于你添加的依赖包。本例中,我们添加了spring-boot-starter-web依赖,然后嵌入式tomcat与spring MVC都自动依赖进来了,这个@EnableAutoConfiguration注解就会假设你开发的是一个web应用程序并进行自动配置。

最后是一个main方法,它是标准的java应用程序的入口。它调用springApplication.run来引导我们的应用程序,自动配置tomcat服务并启动spring。它需要Example.class作为run方法的一个参数,告诉SpringAppLication它是一个主要的spring组件。args数组作为参数是通过命令行传入的。

运行示例

我们既然使用了spring-boot-starter-parent,那我们就有一个有用的run目标(maven中目标)来启动应用程序。在工程的根目录执行下面的命令:

$ mvn spring-boot:run

如果你打开浏览器输入:localhost:8080/ 你会看到输入:Hello World!  按ctrl + c可以优雅地退出!

创建一个可执行的jar

让我们创建一个可完全独立执行的jar文件。创建一个可独立执行的jar文件,我们需要在项目的pom.xml中添加spring-boot-maven-plugin,如下:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

指定java版本

pom.xml中添加:

<properties><java.version>1.8</java.version>
</properties>

完整的pom.xml文件如下:

<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>net.scanner</groupId><artifactId>hello_world</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.0.BUILD-SNAPSHOT</version></parent><!-- 指定java版本,只需要在这里声明下这个参数变量就可以了 --><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><!-- 如果你使用的是RELEASE版本,就不需要下面的配置 --><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>

注意:spring-boot-starter-parent的pom包含了<executions>配置来绑定repackage目标。如果你不使用父pom中的配置,你需要定义你自己的配置。运行:

$ mvn package

即可打包完成!!

如果你在工程的target目录下看到 hello_world-0.0.1-SNAPSHOT.jar ,那就是打包成功!如果你想看这个jar包里面的内容,可以执行:

$ jar tvf target/hello_world-0.0.1-SNAPSHOT.jar

你在target目录下,还会看到一个hello_world-0.0.1-SNAPSHOT.jar.original文件。它是在spring boot打包之前原有的jar文件。

现在运行应用程序,我们可以使用 java -jar 命令:

$ java -jar target/hello_world-0.0.1-SNAPSHOT.jar

退出按:CTRL + C

转载于:https://my.oschina.net/fhd/blog/415936

开发第一个spring boot应用相关推荐

  1. 从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建

    从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建 本文简介 为什么使用Spring Boot 搭建怎样一个环境 开发环境 导入快速启动 ...

  2. Spring Boot快速开发利器:Spring Boot CLI

    Spring Boot CLI(Command Line Interface)是一个命令行工具,您可以用它来快速构建Spring原型应用.通过Spring Boot CLI,我们可以通过编写Groov ...

  3. eclipse创建springboot项目_创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  4. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02

    概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...

  5. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01

    文章目录 概述 使用Spring Tool Suite构建Spring Boot项目 下载STS 插件安装 搭建第一个Spring Boot项目 启动项目 概述 通常,构建一个Spring Boot项 ...

  6. 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  7. 【Spring-Boot】【入门 01】第一个 Spring Boot 程序

    文章目录 一.SpringBoot入门 1. SpringBoot简介 2.微服务 3.Spring Boot 的基础知识 4.环境约束 5.环境配置 maven设置 IDEA设置 二.创建一个Hel ...

  8. Spring Boot (1) 构建第一个Spring Boot工程

    Spring boot简介 spring boot是spring官方推出的一个全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程. Spring boot特点 1.化繁为简,简化配 ...

  9. Spring Boot(5)---第一个Spring Boot应用程序

    Spring Boot入门:开发您的第一个Spring Boot应用程序 本节介绍如何开发一个简单的"Hello World!"Web应用程序,该应用程序重点介绍Spring Bo ...

最新文章

  1. Ajax入门总结--Ajax跨域请求
  2. DEDECMS全版本gotopage变量XSS ROOTKIT 0DAY
  3. JDBC入门案例及相关API概述
  4. SVN Cannot merge into a working copy that has local modifications
  5. 7-30 查询水果价格 (15 分)
  6. 如何解决多机房、多网络下的物联网部署方案?
  7. ZZULIOJ1013
  8. Visual SourceSafe如何支持并行开发
  9. php faker,PHP Faker 教程
  10. AngularJs 生命周期$onChanges钩子函数总结
  11. python opencv 读取图片_Python opencv 读取图像
  12. 【京东春招】别人的面经中记录的问题
  13. 在 Windows 下用 GCC 编译器练习 C/C++ 的简单教程
  14. 打造在线简历生成器,让面试官眼前一亮……
  15. Altium_Designer(protel_DXP)英文菜单汉化对应表表
  16. [bzoj1984]月下“毛景树” 树链剖分
  17. 用计算机制作程序框图,如何制作工艺流程图 电脑绘制工艺流程图方法
  18. 一闪一闪亮晶晶,满屏都是小星星
  19. 高通中国区VR/AR负责人 郭鹏:XR要成功,最关键、最底层的技术就是空间计算
  20. ImportError: cannot import name ‘SummaryWriter‘ from partially initialized module ‘torch.utils.tenso

热门文章

  1. json php input,在php中读取json输入
  2. 显示控制器注释_欧姆龙可编程控制器CS1D-CPU产品型号说明及功能介绍
  3. java 考试复习整理——JAVA类和类成员的修饰符
  4. Linux 部分常用命令
  5. C语言calloc()函数:分配内存空间并初始化
  6. 【汇编语言】程序设计过程,如何避免数据类型匹配错误?
  7. sigsuspend函数(mysleep函数的改进)
  8. angularjs 默认跳转
  9. 20145206邹京儒《网络对抗》逆向及Bof基础实践
  10. wordpress 基础文件