springboot2.x最佳实践《一》之springboot2.x初体验

     2022-04-07     531

关键词:

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等,均采用目前最新的版本


资料和开发工具准备:

  • 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启动流程和常用的注解、官方推荐的目录规范


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

技术分享图片

(汇总)springboot实践折腾记&springboot2.x实践记

SpringBoot2.x实践记SpringBoot2.x实践记:Retry(annotion)SpringBoot2.x实践记:GsonSpringBoot2.x实践记:MailSpringBoot2.x实践记:H2DatabaseSpringBoot实践折腾记SpringBoot实践折腾记(1&# 查看详情

springboot2.x实践记:gson(代码片段)

目录1、Gson依赖2、Gson自动配置3、配置Gson为首选JSON映射器4、完全排除Jackson5、实战6、测试7、小结TL;DR本文,我们一起来实践使用Gson作为首选的json映射器,替换SpringBoot默认的Jackson。1.Gson依赖<dependencies><dependency>... 查看详情

springboot2.x实践记:gson(代码片段)

目录1、Gson依赖2、Gson自动配置3、配置Gson为首选JSON映射器4、完全排除Jackson5、实战6、测试7、小结TL;DR本文,我们一起来实践使用Gson作为首选的json映射器,替换SpringBoot默认的Jackson。1.Gson依赖<dependencies><dependency>... 查看详情

springboot2.x如何解决重复提交(本地锁的实践)

有没有遇到过这种情况:网页响应很慢,提交一次表单后发现没反应,然后你就疯狂点击提交按钮(12306就经常被这样怒怼),如果做过防重复提交还好,否则那是什么级别的灾难就不好说了。。。本文主要是应用自定义注解、s... 查看详情

springboot最佳实践快速入门

一、关于SpringBoot在开始了解SpringBoot之前,我们需要先了解一下Spring,因为SpringBoot的诞生和Spring是息息相关的,SpringBoot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,SpringBoot是为了让程序员更好的使用Spring。说到... 查看详情

springboot2.x实战之定时任务调度

在后端开发中,有些场景是需要使用定时任务的,例如:定时同步一批数据、定时清理一些数据,在SpringBoot中提供了@Scheduled注解就提供了定时调度的功能,对于简单的、单机的调度方案是足够了的。这篇文章准备用实际案例看... 查看详情

springboot2.x实战之定时任务调度

在后端开发中,有些场景是需要使用定时任务的,例如:定时同步一批数据、定时清理一些数据,在SpringBoot中提供了@Scheduled注解就提供了定时调度的功能,对于简单的、单机的调度方案是足够了的。这篇文章准备用实际案例看... 查看详情

springboot2.x实践记:mail(代码片段)

...邮件发送HTML格式邮件实战测试小结TL;DR本文是实践如何在SpringBoot2中使用JavaMailSender发送邮件:发送简单邮件发送带附件邮件发送HTML格式邮件1.Maven依赖<dependency><groupId>org.springframework.boot</groupId&g 查看详情

springboot2.x实践记:mail(代码片段)

...邮件发送HTML格式邮件实战测试小结TL;DR本文是实践如何在SpringBoot2中使用JavaMailSender发送邮件:发送简单邮件发送带附件邮件发送HTML格式邮件1.Maven依赖<dependency><groupId>org.springframework.boot</groupId&g 查看详情

springboot2.x应用之手工创建web应用

用IDEA开发工具(具体下载安装百度有详细教程,这里就不多介绍了)。好了,现在进入主题:步骤一:打开IDEA,点击"CreateNewProject",如图:步骤二:在左侧导航栏选中"Maven",接着设置ProjectSDK(注意需要JDK1.8版本以上),然后勾选... 查看详情

云计算之kvm虚拟化最佳实践

一.云计算出现的背景  在云计算出现之前,大部分企业的数据服务的数据中心一般是以IDC托管的形式,一般企业买设备放到IDC机房托管,然后安装系统,部署服务,购买域名绑定,到外网访问的一系列的流程过程。 &n... 查看详情

springboot2.x实践记:h2database(代码片段)

...H2Console小结TL;DR今天,我们一起来快速学习下如何在SpringBoot2下配置H2数据库。H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。1.H2Database什么是H2Database?H2是用Java编写... 查看详情

springboot2.x实践记:h2database(代码片段)

...H2Console小结TL;DR今天,我们一起来快速学习下如何在SpringBoot2下配置H2数据库。H2作为内存数据库,被广泛应用于本地单元测试,开发环境数据表操作,临时数据存储等。1.H2Database什么是H2Database?H2是用Java编写... 查看详情

springboot之logback日志最佳实践

一、SpringBoot日志介绍  SpringBoot对所有内部日志记录使用了CommonsLogging,但是底层日志实现是开放的。为JavaUtil日志记录、Log4J2和Logback提供了缺省配置。在每种情况下,日志记录器都预先配置为使用控制台输出和可选的文件输... 查看详情

springboot2.x实践记:@springboottest(代码片段)

目录@SpringBootTest用@SpringBootTest集成测试用@SpringBootTest单元测试小结TL;DR在SpringBoot中做测试,默认使用@SpringBootTest注解,今天我们就来快速学习如何进行单元测试或集成测试。1.@SpringBootTest运行SprngBoot测试... 查看详情

springboot2.x实践记:@springboottest(代码片段)

目录@SpringBootTest用@SpringBootTest集成测试用@SpringBootTest单元测试小结TL;DR在SpringBoot中做测试,默认使用@SpringBootTest注解,今天我们就来快速学习如何进行单元测试或集成测试。1.@SpringBootTest运行SprngBoot测试... 查看详情

网红框架springboot2.x之定制参数浅析

现在我们已经知道,我们可以通过在运行jar时提供一系列的参数来定制SpingBoot为我们默认做好的设置。如果我们要定制的属性很多,在实际开发中,你可能会需要覆盖上百个SpringBoot的默认设置,如果这些设置写在java-jar运行命令... 查看详情

springboot2.x-springboot整合amqp之rabbitmq

文章目录SpringBoot2.X-SpringBoot整合AMQP之RabbitMQRabbitMQ简介引入依赖编写配置编写接口启用Rabbit注解消息监听消息测试SpringBoot2.X-SpringBoot整合AMQP之RabbitMQSpringBoot2整合RabbitMQ案例。RabbitMQ简介简介RabbitMQ是一个由erlang开发的AMQP(AdvanvedMess... 查看详情