如何优雅地写出HelloWorld(SpringBoot版)

虽然标题是写HelloWorld,但既然是学习SpringBoot,那就写个Hello SpringBoot吧!

第一步永远都是创建项目,SpringBoot也不例外

一、实现一个简单的HelloWorld

1、新建一个SpringBoot项目

点击下一步,进入项目创建界面(需要连网哦!)

完成点击next,进入依赖添加界面,由于我们做web相关开发,于是选择web依赖

最后再检查一下项目名称

 

没有问题,则点击finish。点击后,一个springboot项目便创建好了。需要说明的是,由于初次创建需要springboot项目做大量的自动配置,所以花费时间较长,请耐心等待噢~


接下来就是敲代码环节:

2、编写主程序类

(其实在我们创建springboot项目后,这个类也是已经为我们创建好了)

主程序类的作用是启动SpringBoot项目,即项目的主入口

3、编写业务逻辑HelloController类

因为我们要实现“输出HelloWorld”功能,所以我们需要浏览器发送hello请求,服务器接收请求并处理,最终反馈给浏览器相应请求的字符串

编写好业务代码以后,我们从主程序类中启动项目。项目启动成功后,则如下图:

这也表明,我们的项目启动成功了。这时候打开浏览器,输入:localhost:8080/hello(即请求数据),浏览器运行结果如下:

二、细节探究

当然,仅仅一个HelloWorld并没有什么难度,但是我们是否注意到了这个小项目的诸多细节呢?因为我们今后会经常和这些小细节打交道,因此,有必要再唠叨唠叨。

1、@SpringBootApplication注解

所谓注解,即Annotation,中文译过来就是注解、标释的意思

此处我们在出程序类前加了一个@SpringBootApplication注解,它有什么用处呢?其用处是标注在某个SpringBoot项目的类上,以此说明这个类是SpringBoo的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoo应用。

我们可以ctrl+左键(这个小技巧十分方便)点击它,进入如下界面:

这说明@SpringBootApplication注解其实是组合注解,即本身是由多个注解组成的。

这条细节牵扯的细节很多,在此我们讲解两个核心知识点:①SpringBoot Starter 的工作原理;②Spring Boot 的自动配置的实现流程

①SpringBoot Starter 的工作原理

这主要涉及SpringBoot 在启动环节经历的流程:

  • SpringBoot 在启动时会先在依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。

  • 根据 spring.factories 配置加载 AutoConfigure 类

  • 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context

总结:其实就是 SpringBoot 在启动的时候,按照约定读取 SpringBoot Starter 的配置信息,再根据配置信息对资源进行初始化,并注入到 Spring 容器中。这样 Spring Boot 启动完毕后,就已经准备好了一切资源,使用过程中直接注入对应 Bean 资源即可。

②Spring Boot 的自动配置的实现流程

前面我们已经知道Spring Boot 项目的启动注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:

  • @Configuration

  • @ComponentScan

  • @EnableAutoConfiguration

其中 @EnableAutoConfiguration 是实现自动配置的入口,该注解又通过 @Import 注解导入AutoConfigurationImportSelector,在该类中加载 META-INF/spring.factories 的配置信息。然后筛选出以EnableAutoConfiguration 为 key 的数据,加载到 IOC 容器中,最终实现自动配置功能。

2、业务逻辑HelloController类的注解

我们发现,在刚才编写的HelloController类内,有@ResponseBody注解。其实我们可以把@ResponseBody注解写在类的外面,这表示这个类的所有方法返回的数据直接写给浏览器(如果是对象则转为json数据)

另外,需要注意的是,@ResponseBody和@Controller这两个注解可以用@RestController进行替换

3、默认生成的SpringBoot项目目录结构

我们创建完项目后,SpringBoot项目会自动生成目录结构

  • src/main/java:主程序入口 TinyContractApplication,可以通过直接运行该类来启动 SpringBoot应用
  • src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录与templates目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。
  • src/test:单元测试目录,生成的 TinyContractApplicationTests 通过 JUnit4实现,可以直接用运行 Spring Boot应用的测试。
  • application.properties:用来保存数据库链接信息等应用程序数据
  • pom.xml:全局配置文件

例如我们想要修改tomcat的端口号,我们可以打开application.properties,并输入server.port=8088

启动项目后我们发现端口号变为了8088

4、SpringBoot项目中将tomcat默认添加

我们发现以往在编写完一个java的web项目后,还需要配tomcat服务器,但是在SpringBoot项目中,再也不需要这一步了,因为SpringBoot项目已经将tomcat集成到了项目当中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值