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.xml
的groupId
+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;
@RestController
public 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
@ResponseBody
public @interface RestController {
@AliasFor(
annotation = Controller.class
)
String value() default "";
}
@Target
,Retention
,@Documented
这三个是JavaSE阶段就应该学习过的元注解,不清楚的我在这里解释下, 元注解是指注解的注解,包括@Target
,Retention
,@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
源码下载
以上是关于SpringBoot 快速入门案例的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot+Dubbo+zookeeper 快速入门案例
SpringBoot+Dubbo+zookeeper 快速入门案例
SpringBoot+Dubbo+zookeeper 快速入门案例