SpringBoot2.X最佳实践 前言

本系列文章,从零基础接触  SpringBoot2.x新版本,基础入门使用,热部署,到整合各个主流框架Redis4.x,消息队列AciveMQ, RocketMQ等,搜索框架ElasticSearch5.6版本,到web-flux反应式编程,到Actuator监控应用信息,官方最佳实践,最全的SpringBoot2.教程

技术选型和更新须知:

  • 采用最新的SpringBoot2.x版本
  • JDK1.8
  • IDEA或者Eclipse编辑器
  • Maven3.x版本
  • 其他框架比如分布式缓存Redis,搜索框架ElasticSearch,消息队列RocketMQ和ActiveMQ等,均采用目前最新的版本
  • 两到三天更新一篇,核心知识点会突出,比如新旧版本拦截器定义,监控Actuator的使用

资料和开发工具准备:

  • JDK1.8下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  • Maven3.x下载:http://maven.apache.org/download.cgi
  • SpringBoot2.x官方文档: https://spring.io/projects/spring-boot#overview

SpringBoot是什么?

学过javaweb的同学就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat, 跑出一个Hello Wolrld程序,是要经历特别多的步骤; 后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot,过一两年又会有其他web框架出现;不知道你们有没经历过框架不断的演进,然后自己开发项目所有的技术也再不断的变化、改造,反正我是都经历过了,哈哈。

言归正传,什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置,  you can "just run",能迅速的开发web应用,几行代码开发一个http接口。

快速创建SpringBoot2.x应用

学任何框架,都从hello world开始,这个也不例外,我们先创建一个http接口,返回json数据。

SpringBoot官方提供了一个快速创建应用的工具“Spring Initializr” , 地址:http://start.spring.io

通过这个可以帮我们生成一个项目的基础框架和目录规范,操作如下图的顺序

1、下载后导入到IDEA或者Eclipse里面,springboot默认加入了很多依赖包,所以需要从远端的maven仓库下载下来,初次导入需要下载很多的依赖包,会比较慢,不过也可以更改Maven仓库地址为国内的的仓库地址。

2、官方包目录接口说明

3、Maven依赖文件讲解

核心配置文件在图片上面,底部有很多暂时用不上的配置,比如仓库地址可以去除,下面的pom文件的都可以去除

<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories> <pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>

  

编写Http接口

1、新建一个包,domian用于存放实体类,并新建一个User.java类

package net.xdclass.demo.domain;/**
* 用户类
*/public class User {
private int id; private String name; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

  


2、新建一个Controller,并建立一个UserController.java, 类加入注解@RestController (用于返回Json数据,如果用@controller的话,需要在加个@responseBody,才会返回json数据),新建一个findUser方法,方法上加个注解,@RequestMapping("find")

package net.xdclass.demo.controller;
import net.xdclass.demo.domain.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 使用 @RestController 定义一个控制器
*/
@RestController
public class UserController { /**
* 定义一个接口,接受两个参数
* @param id
* @param name
* @return
*/
@RequestMapping("find")
public User findUser(int id, String name){
User user = new User();user.setName(name);
user.setId(id); return user;
}
}

  

3、使用CMD或者命令行工具进入项目根目录,把应用打包成一个可执行的jar包, 执行maven打包命令 mvn clean package

[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ demo ---
[INFO] Building jar: /Users/xdclass/Desktop/文章/第一篇/demo/target/demo-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.3.RELEASE:repackage (default) @ demo ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.459 s
[INFO] Finished at: 2018-07-16T08:34:57+08:00
[INFO] ------------------------------------------------------------------------ 

打包成功后最后会出现一个success,然后进入target目录,里面有个xxx.jar  (xxx就是项目的名字)就是可以直接执行的jar包.

启动  java -jar xxxx.jar, 启动大概花10来秒,底部可以看到启动成功的日志,springboot默认端口是8080, 所以可以直接访问,

接口地址:http://localhost:8080/find?id=1&name=二当家小D

响应一个user对象,就成功了。

这就是一个成功的http接口,一个web应用就可以正常启动了访问和访问了,如果要开发其他接口,继续写就可以了。

下一篇文章,讲解Springboot2.x启动流程和常用的注解、官方推荐的目录规范

小编积累多年的干货文档免费赠送,包含前端后端和测试,系统架构,高并发处理,优化等

SpringBoot2.X最佳实践《一》 之 SpringBoot2.x初体验的更多相关文章

  1. Typescript 最佳实践

    文章列表: <一>大话 TypeScript 基本类型 <二>大话 Typescript 枚举 <三>大话 Typescript 接口 <四>大话 Ty ...

  2. spring-boot-2.0.3之quartz集成,最佳实践

    前言 开心一刻 快过年了,大街上,爷爷在给孙子示范摔炮怎么放,嘴里还不停念叨:要像这样,用劲甩才能响.示范了一个,两个,三个... 孙子终于忍不住了,抱着爷爷的腿哭起来:爷呀,你给我剩个吧! 新的一年 ...

  3. ASP.NET跨平台最佳实践

    前言 八年的坚持敌不过领导的固执,最终还是不得不阔别已经成为我第二语言的C#,转战Java阵营.有过短暂的失落和迷茫,但技术转型真的没有想象中那么难.回头审视,其实单从语言本身来看,C#确实比Java ...

  4. 《AngularJS深度剖析与最佳实践》简介

    由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...

  5. ASP.NET MVC防范CSRF最佳实践

    XSS与CSRF 哈哈,有点标题党,但我保证这篇文章跟别的不太一样. 我认为,网站安全的基础有三块: 防范中间人攻击 防范XSS 防范CSRF 注意,我讲的是基础,如果更高级点的话可以考虑防范机器人刷 ...

  6. 快速web开发中的前后端框架选型最佳实践

    这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...

  7. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  8. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  9. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

随机推荐

  1. 长春理工大学第十四届程序设计竞赛(重现赛)M.Orx Zone

    链接:https://ac.nowcoder.com/acm/contest/912/M 题意: Daenerys Stormborn, 风暴中出生的丹尼莉丝,the Unburnt, 烧不死的,Qu ...

  2. LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence.Fo ...

  3. fiddle

    web开发中Chrome.IE.firefox等浏览器都自带提供了插件帮助开发者跟踪http数据,在手机客户端怎么实现http数据抓包呢?Fiddler可以实现真机调试抓包.Fiddler支持Any ...

  4. oracle 中的null与''

    1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...

  5. [切图仔救赎]炒冷饭--在线手撸vue2响应式原理

    --图片来源vue2.6正式版本(代号:超时空要塞)发布时,尤雨溪推送配图. 前言 其实这个冷饭我并不想炒,毕竟vue3马上都要出来.我还在这里炒冷饭,那明显就是搞事情. 起因: 作为切图仔搬砖汪,长 ...

  6. 3 - EventLoop和线程模型-事件循环

    a). EventLoopGroup为每个新创建的channel分配一个EventLoop,多个channel对应一个EventLoop. b). 一个EventLoop由一个不变的thread驱动, ...

  7. maven相关说明,以及使用Testng相关

    配置Apache Maven Apache Maven使用本身的配置和建立的项目位于许多地方: MAVEN_OPTS环境变量: 该变量包含用于启动运行Maven的JVM的参数,可用于向Maven提供其 ...

  8. 冷笑话,idea 按删除键就是undo?

    第一反应是keymap被改了,一看 那么,看起来就是alt出问题了 解决方法 在公司换一个键盘或者狂按alt

  9. &&运算符和||运算符的优先级问题 专题

    public class SyntaxTest { @Test public void test() { System.out.println(true || true && fals ...

  10. ADO学习笔记之注入漏洞与参数化查询

    ADO学习笔记之注入漏洞与参数化查询 作为新手,在学习ADO程序时,使用 sql 语言查询数据时,很容易写类似如下代码: using (SqlConnection con = new SqlConne ...