springboot入门之路(一)

springboot入门之路

参考文档:SpringBoot参考指南;SpringBoot实战

1.Spring Boot介绍

Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提
供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。
你可以使用Spring Boot创建Java应用,并使用 java -jar 启动它或采用传统的war部署方式。我们也提供了一个运行"spring
脚本"的命令行工具。
我们主要的目标是:
- 为所有的Spring开发提供一个从根本上更快的和广泛使用的入门经验。
- 开箱即用,但你可以通过不采用默认设置来摆脱这种方式。
- 提供一系列大型项目常用的非功能性特征(比如,内嵌服务器,安全,指标,健康检测,外部化配置)。
- 绝对不需要代码生成及XML配置。

2.开发你的第一个Spring Boot应用

  • 使用Spring Initializr的Web界面
  • 要使用Spring Initializr,最直接的办法就是用浏览器打开http://start.spring.io,你应该能看到表单的头两个问题是,你想用Maven还是Gradle来构建项目,以及使用Spring Boot的哪个版本。程序默认生成Maven项目,并使用Spring Boot的最新版本(非里程碑和快照版本),但你也可以自由选择其他选项。
  • 表单左侧要你指定项目的一些基本信息。最起码你要提供项目的Group和Artifact,但如果你 点击了“Switch to the full version”链接,还可以指定额外的信息,比如版本号和基础包名。这些信息是用来生成Maven的pom.xml文件

QQ图片20180409104635.png

  • 填完表单,选好依赖,点击“Generate Project”按钮,Spring Initializr就会为你生成一个项目。
  • 浏览器将会以ZIP文件的形式(文件名取决于Artifact字段的内容)把这个项目下载下来。根据你的选择,ZIP文件的内容也会略有不同。不管怎样,ZIP文件都会包含一个极其基础的项目,让你能着手使用Spring Boot开发应用程序
C:\Users\Administrator>jar -tvf C:\Users\Administrator\Downloads\demo.zip
     0 Mon Apr 09 02:43:34 CST 2018 demo/
  6468 Mon Apr 09 02:43:34 CST 2018 demo/mvnw
     0 Mon Apr 09 02:43:34 CST 2018 demo/.mvn/
     0 Mon Apr 09 02:43:34 CST 2018 demo/.mvn/wrapper/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/java/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/java/com/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/java/com/example/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/java/com/example/demo/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/resources/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/test/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/test/java/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/test/java/com/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/test/java/com/example/
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/test/java/com/example/demo/
   268 Mon Apr 09 02:43:34 CST 2018 demo/.gitignore
 47610 Mon Apr 09 02:43:34 CST 2018 demo/.mvn/wrapper/maven-wrapper.jar
   110 Mon Apr 09 02:43:34 CST 2018 demo/.mvn/wrapper/maven-wrapper.properties
  4994 Mon Apr 09 02:43:34 CST 2018 demo/mvnw.cmd
  1410 Mon Apr 09 02:43:34 CST 2018 demo/pom.xml
   304 Mon Apr 09 02:43:34 CST 2018 demo/src/main/java/com/example/demo/DemoApplication.java
     0 Mon Apr 09 02:43:34 CST 2018 demo/src/main/resources/application.properties
   331 Mon Apr 09 02:43:34 CST 2018 demo/src/test/java/com/example/demo/DemoApplicationTests.java

2.1创建POM

C:\Users\Administrator>mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: E:\tools\apache-maven-3.0.4\bin\..
Java version: 1.7.0_75, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_75\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"


E:\ruiyouProjects\springboot入门之路(一)>mvn package
[INFO] Scanning for projects...
......
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.394s
[INFO] Finished at: Sun Apr 08 14:58:59 CST 2018
[INFO] Final Memory: 15M/223M
[INFO] ------------------------------------------------------------------------
  • 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.manning</groupId>
<artifactId>readinglist</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ReadingList</name>
<description>Reading List Demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{springBootVersion}</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<start-class>readinglist.Application</start-class>
<java.version>1.7</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

2.2yml和properties的配置区别

yml配置
server:  
  port: 8080  
  session-timeout: 30  
  tomcat.max-threads: 0  
  tomcat.uri-encoding: UTF-8 
properties配置
server.port=8080  
server.session-timeout=30  
server.context-path=  
server.tomcat.max-threads=0  
server.tomcat.uri-encoding=UTF-8 

总结:yml是可以简化写法,通过缩进来省去前面重复的包。加载顺序properties优先加载,yml其后。

2.3springbootDemo代码

package com.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class SpringbootDemo {
    @RequestMapping("/hello/{test}")
    public String hello(@PathVariable String test){
        return "hello world "+test;
    }
     public static void main(String[] args) {
        SpringApplication.run(SpringbootDemo.class, args);
     }
}

2.4创建一个可执行jar

让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行。可执行jars(有时候被
成为胖jars "fat jars")是包含你的编译后的类和你的代码运行所需的依赖jar的存档。
可执行jars和Java:Java没有提供任何标准的加载内嵌jar文件(即jar文件中还包含jar文件)的方法。如果你想发布一个自包
含的应用这就是一个问题。为了解决该问题,很多开发者采用"共享的"jars。一个共享的jar简单地将来自所有jars的类打包进
一个单独的“超级jar”。采用共享jar方式的问题是很难区分在你的应用程序中可以使用哪些库。在多个jars中如果存在相同的文
件名(但内容不一样)也会是一个问题。Spring Boot采取一个不同的途径,并允许你真正的内嵌jars。
为了创建可执行的jar,需要将 spring-boot-maven-plugin 添加到我们的pom.xml中。在dependencies节点下插入以下内容:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
注: spring-boot-starter-parent POM包含用于绑定repackage目标的 <executions> 配置。如果你不使用parent POM,你将
需要自己声明该配置。具体参考插件文档。
保存你的pom.xml,然后从命令行运行 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.0.BUILD-SNAPSHOT:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
如果查看target目录,你应该看到 myproject-0.0.1-SNAPSHOT.jar 。该文件应该有10Mb左右的大小。如果想偷看内部结构,你
可以运行 jar tvf :
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
在target目录下,你应该也能看到一个很小的名为 myproject-0.0.1-SNAPSHOT.jar.original 的文件。这是在Spring Boot重新打
包前Maven创建的原始jar文件。
为了运行该应用程序,你可以使用 java -jar 命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

继续阅读点击:springboot入门之路(二)

声明:我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

Spring Boot 2.X 来临,本文将带你起飞!

当前互联网技术盛行,以Spring 框架为主导的Java 互联网技术成了主流,而基于Spring 技术衍生出来的Spring Boot,采用了“约定优于配置”的...

1151
来自专栏Java技术栈

告诉你,Spring Boot 真是个牛逼货!

现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家...

1222
来自专栏JAVA技术站

SpringCloud Eureka注册中心使用

一、maven依赖配置,SpringCloud目前有四个版本,经测试Camden,Dalston两个版本构建Eureka正常,其它两版本存在jar依赖问题,所以...

604
来自专栏大数据学习笔记

Hadoop基础教程-第13章 源码编译(13.3 HBase1.2.6源码编译)

第13章 源码编译 13.3 HBase1.2.6源码编译 13.3.1 下载源码 https://mirrors.tuna.tsinghua.edu.cn/a...

20310
来自专栏开发与安全

安装Redhat 5.8遇到的一系列问题

为啥要将ubuntu换成redhat呢,因为接下来想把EDA工具都安装在下面。最后还是因为对显卡驱动不满而重装ubuntu,但这个过程还是学到很多。 写在前面...

20210
来自专栏Danny的专栏

【EJB学习笔记】——建立一个简单的EJB应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

862
来自专栏王亚昌的专栏

KAFKA-PHP环境搭建

kafka_2.10-0.10.0.1.tgz 解压到  /home/deploy/tar/kafka_2.10-0.10.0.1 

1023
来自专栏乐沙弥的世界

Percona XtraDB Cluster添加仲裁节点

Galera Arbitrator是Percona XtraDB集群的成员,用于投票,以防您拥有少量服务器(通常为两个)并且不希望添加更多资源。Galera仲裁...

1452
来自专栏后台及大数据开发

Linux巩固记录(8) Hbase shell 基本使用

1.进入hbase shell: hbase有很多种操作方式,比如shell,java客户端,webUI等,可以直接输入hbase进行提示

681
来自专栏WindCoder

springBoot初探-创建项目

一边学习公司用到的技术,一边重构小程序后端,从而更好的理解公司搭建的框架。此处记录一个用idea+gradle+springboot的基础实现。

591

扫码关注云+社区