SpringBoot2.X快速入门案例
发布日期:2022-03-30 18:18:26 浏览次数:67 分类:博客文章

本文共 3838 字,大约阅读时间需要 12 分钟。

SpringBoot 快速入门案例

现今“微服务”已成许多企业开发转型的软件架构,而我司也已经由传统的SSH单体架构转向微服务的软件架构,我也留下了感动的泪水(手动狗头),不得不说自微服务2016年提出后,一直到现在可谓是持续火热,从百度搜索指数可以看出16至20年,基本维持在较高的峰值,而我的公司最近也开始一些列的技术升级,自己也在之前写过一些SpringBoot的Demo,刚好最近重新捡起来,写一个连载SpringBoot2.X系列供大家学习交流吧

文章目录

目录

微服务与SpringBoot及SpringCloud的关系

微服务:

单个服务的设计,是一个微服务架构,打个比方它就好像Java的接口,需要具体的类去实现接口中的抽象方法,而SpringBoot与SpringCloud一组合就能简洁地实现抽象的微服务。

Spring Boot:

简化创建Spring应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。

Spring Cloud

微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。

Spring,SpringMVC与SpringBoot的关系

Spring:

Spring是一个一站式的轻量级的Java开发框架,学Web开发最先学的就是这个框架

SpringMVC

Spring MVC提供了一种轻度耦合的方式来开发web应用,Spring MVC是Spring基础之上的一个MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂

Spring Boot只是一个配置加整合工具

Spring Boot框架其实可以说是一个简化过后Spring MVC框架来说(用默认的配置代替XML配置),但不同的是SpringBoot更专注于开发微服务后台接口,不开发前端视图

总结Spring家族产品

Spring 是一个“引擎”;

Spring MVC 是基于Spring的一个 MVC 框架;

Spring Boot 是基于Spring4的条件注册的一套快速开发整合包;

Spring Cloud 是在Spring Boot之上的全局微服务的整合和管理。

SpringBoot入门环境要求及创建步骤

目前Spring官网正式发行的版本是2.2.2版本,本文也是基于2.2.2版本快速搭建入门的案例,所用到的工具有

Maven3.2+Java1.8+,集成开发工具我这里使用的IDEA,话不多说开始入门教程,创建应用就一路next即可,先上手玩玩再以后考虑规范命名的事嘛(手动狗头)

IDEA创建SpringBoot文件目录结构

这里只需要关注pom.xml和src文件夹下目录结构,只需要知道带有mvn的都是与Maven相关的,用于记录Maven版本信息和方便分布式部署,这里入门案例是单体部署,不需要用到,有强迫症可以删除带有mvn的文件和目录

文件目录 对应的作用
.mvn 存放maven-wrapper.properties和其jar包(可以忽略)
src 标准的Maven目录结构(它目录有main和test目录)
src下的main main目录存放Java源文件,test存放用于测试文件
src下的main的java下的带有Application.java SpringBoot程序主入口
src下的main的resources下的static 用于存放静态资源文件如js,css.images
src的main的resources下的templates 用于存放模板引擎的文件如Themeleaf,Freemarker

这里补充说明,SpringBootController是需要手动创建在SpringbootApplication所在的目录下,每个人命名的包名和项目名不同因此项目结构会略微不同,

使用IDEA中的Spring initializr 创建的SpringBoot应用,它默认会根据Maven的pom.xmlgroupId+name初始化项目的包名和目录结构

SpringbootApplication是程序主入口,它所在包将会是SpringBoot自动扫描和装配的目录,相当于之前的SSM框架中component-scan的作用,因此自动配置它目录下所有的包名包括我们自定义的Controller包中SpringBootController.java

编写控制层代码SpringBootController

package com.luojay.springbootstart.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@RestControllerpublic class SpringBootController {    @RequestMapping("/hello")    public String SayHello(){        return "Hello SpringBoot!";    }}

SpringBootController类被标记为@RestController,这意味着Spring MVC可以使用它来处理Web请求。@RequestMapping/hello映射到SayHello()方法。 从浏览器使用url访问时,该方法返回纯文本。

这是因为@RestController结合了@Controller@ResponseBody这两个注解,这两个注解导致Web请求返回数据而不是视图页面,我们也可以按住Ctrl+鼠标左键点进@RestController这个注解看看里面的代码

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@ResponseBodypublic @interface RestController {    @AliasFor(        annotation = Controller.class    )    String value() default "";}

@TargetRetention@Documented这三个是JavaSE阶段就应该学习过的元注解,不清楚的我在这里解释下, 元注解是指注解的注解,包括@TargetRetention@Documented@Inherited四种 ,

@Retention: 定义注解的保留策略 ,@Retention(RetentionPolicy.RUNTIME)表示是 注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Target:定义注解的作用目标 ,@Target({ElementType.TYPE})表名该注解是作用在 接口、类、枚举、注解上

@Documented:是用来打包编译时,根据注解和文档注释同时生成一个文档,就是我们平时阅读Java 8那种官方帮助文档

剩下的就是RestController集成的注解@Controller@ResponseBody@Controller是告知Spring这是一个控制层的Bean类,@ResponseBody是将数据直接响应输出

启动SpringBoot应用

@SpringBootApplication是一个集成的注解,它添加了以下所有内容,按住Ctrl+鼠标左键可以点进去查看这个注解的详细内容,可以看出里面除了JavaSE阶段基础的元注解,还有的SpringBoot提供的注解

@Configuration:将类标记为应用程序上下文的Bean定义的源

@EnableAutoConfiguration:告诉Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean。 例如,如果spring-webmvc在类路径上,则此注解将应用程序标记为Web应用程序并激活关键行为,例如设置DispatcherServlet

@ComponentScan:告诉Spring在com/example包中寻找其他组件,配置和服务,让它找到控制器

main()方法使用Spring Boot的SpringApplication.run()方法启动应用程序。 您是否注意到没有一行XML? 也没有web.xml文件 ,整个Web应用程序是100%纯Java代码实现的

点击绿色的按钮,就可以启动SpringBoot应用了

案例实现的效果

在浏览器输入http:localhost:8080/hello

源码下载

🔨Github:

如果博文对你有用,在Github给个Star!

欢迎关注我的公众号:CodeLuoJay,获取更多SpringBoot学习资料和视频

转载地址:https://www.cnblogs.com/codeluojay/p/12075174.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:基于google protobuf 的 socket udp 通信
下一篇:ST算法

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 04时55分56秒