Spring Boot Document Part II(下)
Part II. Getting started
11. 开发第一个Spirng Boot Application
使用Spring Boot的关键特征开发一个基于JAVA Web的“Hello World”,使用Maven构建该项目。开始之前先检查一下JDK及Maven是否安装。
【start.spring.io可快速构建Spring Boot Project结构】
$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
11.1 创建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.3.6.RELEASE</version>
</parent> <!-- Additional lines to be added here... --> </project>
可以运行mvn package进行测试(暂时忽略警告“jar will be empty - no content was marked for inclusion!”)
11.2 添加依赖
Spring Boot提供大量的“Starter POMs”便于添加jars,示例中已经使用了parent节点的spring-boot-starter-parent。该节点提供了非常有用的默认的Maven支持
其他“Starter POMs”提供你需要的依赖,如Web项目需要spring-boot-starter-web。
我们可以通过mvn dependency:tree命令打印当前项目的依赖树结构,如添加web之前,可以看到spring-boot-starter-parent没有其他依赖:
$ mvn dependency:tree [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
添加spring-boot-starter-web之后,可以看到web依赖包结构,包含Tomcat web server和Spring Boot。
11.3 编码
添加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);
} }
11.3.1 @RestController和 @RequestMapping
@RestController为类型注解,用来提示读代码的人,同时Spring通过该注解加载该类,表明其用来处理web request。
@RequestMapping提供路由信息,表明何种http链接匹配该方法。@RestController告知Spring直接将结果字符串返回给调用者。
【详细信息参考Spring Mvc】
11.3.2 @EnableAutoConfiguration
@EnableAutoConfiguration注解告诉Spring根据你假如的依赖希望如何配置你的程序,因为spring-boot-starter-web依赖配置了Tomcat和Spring MVC,自动配置会假设你要开发一个web应用。
Starter POMs and Auto-Configuration
两者可以协同工作,但是这两个概念却无关。你可以自由选择Starter POMs之外的jar依赖来自动配置应用。
11.3.3 main入口
Java程序的标准入口,通过委托给SpringApplication的run方法,其会自动配置Tomcat Server。
11.4 运行示例
通过命令mvn spring-boot:run来启动spring boot程序。【这里有坑,如果以java -jar直接运行main方法,controller可以访问,但是jsp无法访问】
$ mvn spring-boot:run . ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
打开浏览器直接访问localhost:8080 可以看到页面显示。
Hello World!
可以使用ctrl -c退出。
11.5 打包
可执行jar包(或“fat jars”)是一系列编译好的class文件及jar依赖的归档。
利用spring-boot-maven-plugin插件来打包,添加至pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
运行mvn package打包
$ mvn package [INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.3.6.RELEASE:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
target目录下生成myproject-0.0.1-SNAPSHOT.jar,大约10M左右。如果你想查看内容,可以执行java tvf解压,有一个myproject-0.0.1-SNAPSHOT.jar.original文件为maven创建被SpringBoot打包之前的源jar包。
通过java -jar命令运行该项目。
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.3.6.RELEASE)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
Spring Boot Document Part II(下)的更多相关文章
- Spring Boot Document Part II(上)
Part II. Getting started 这一章内容适合刚接触Spring Boot或者"Spring"家族的初学者!随着安装指导说明,你会发现对Spring boot有一 ...
- spring boot不要放在tomcat下启动,因为自身就带了集成tomcat
spring boot不要放在tomcat下启动,因为自身就带了集成tomcat
- Spring Boot 获取 java resources 下文件
Spring Boot 获取 java resources 下文件 Spring Boot 获取 resources 目录下的目录(例:获取 resources 目录下的 template 目录): ...
- Spring Boot事务管理(下)
在上两篇 Spring Boot事务管理(上)和Spring Boot事务管理(中)的基础上介绍注解@Transactional. 5 @Transactional属性 属性 类型 描述 value ...
- 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到
接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...
- Spring Boot项目在Mac下使用Maven启动时碰到的神奇问题:Unregistering JMX-exposed beans on shutdown
错误如下: ➜ springboottest1 mvn spring-boot:run [INFO] Scanning for projects... [INFO] [INFO] ---------- ...
- spring boot打包以及centos下部署
spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...
- Spring boot 读取resource目录下的文件
背景:最近做项目重构将以前的ssh + angular js架构,重构为spring boot + vue.项目是一个数据管理平台,后台涉及到多表关联查询,数据导入导出等. 问题:读取resource ...
- Spring Boot Document Part I
最近准备学习Spring Boot 随便翻一下官方的文档 Part I. Spring Boot Documentation Spirng Boot简短介绍,作为接下来内容的导航,可快速预览本章内容. ...
随机推荐
- 【拦截器】HandlerInterceptor接口
package org.springframework.web.servlet; import javax.servlet.http.HttpServletRequest; import javax. ...
- WebSocket 连接关闭(代码:1006)
前端WebSocket 连接关闭(代码:1006) function connect() { //判断当前浏览器是否支持WebSocket if ('WebSocket' in window) { w ...
- WPF DEV实现手风琴效果
说明 最近用WPF+DevExpress做项目时,需要做一个类似手风琴的效果,效果的界面如下.因为没有现成的控件,需要自定义模板,所以写了一个Demo和大家分享,项目中可以根据实际情况使用.如果你用不 ...
- positio:absolute与position:relative的区别
absolute 能让元素 inline-block 化:例如一个div标签默认宽度是100%显示的,但是一旦被absolute属性缠上,则100%默认宽度就会变成自适应内部元素的宽度. float ...
- CSS3四个自适应关键字——fill-available、max-content、min-content、fit-content
前面的话 一般地,有两种自适应:撑满空闲空间与收缩到内容尺寸.CSS3将这两种情况分别定义为'fill-availabel'和'fit-content'.除此之外 ,还新增了更细粒度的'min-con ...
- Java Spring的简单见解
Spring的注解特性,IOC控制反转 首先了解依赖注入是什么,就是在实例化对象的时候并不需要每次都new对象出来,spring管理对象,在你配置been或者@service时候 Spring会自动帮 ...
- CDN架构以及原理分析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp61 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应 ...
- 云计算的三种服务模式IaaS、PaaS和SaaS的差别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt363 云服务"现在已经快成了一个家喻户晓的词了.如果你不知道Paa ...
- indexOf和lastIndexOf方法
lastIndexOf 方法: 返回 String 对象中子字符串最后出现的位置. strObj.lastIndexOf(substring[startindex]) 参数:strObj必选项.Str ...
- 【笔记】shellcode相关整理
0x01:shellcode定义 Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限.另外,Shellcode一般是作为数据发送给受攻击服务器 ...