Spring Boot (一)初识Spring Boot框架

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!

前言
(一). Spring Boot 的诞生

(二). Spring Boot 的特性

(三). Spring Boot项目创建

(四). Spring Boot 的核心配置

(一). Spring Boot 的诞生

说起 Spring Boot 我们不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spirng 大家族,而且 Spring Boot 的诞生和 Sping 框架的发展息息相关。

2002年,当时it行业的语言正是 Java EE 和 EJB 如日中天的时候,很多公司,甚至很多知名公司都是采用此技术方案进行项目开发。一个美国的it开发人员认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。

在这种情况下,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。Spring 就是在这种情况下诞生的。

随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 被不断的进行扩充,到了后来 Spring 几乎可以做任何想要做的事情了,市面上主流的开源软件、中间件都有 Spring 对应组件支持,但是人们在使用Spring 的这种便利的同时,也遇到了一些问题。

Spring 每集成一个开源软件,就需要增加一些基础配置,慢慢的随着人们开发的项目越来越庞大,往往需要集成很多开源软件,因此后期使用 Spirng 开发大型项目需要引入很多配置文件,太多的配置非常难以理解,并容易配置出错,后来人们甚至 害怕Spring 的配置。

Spring 似乎也意识到了这些问题,这个时候微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 刚好处在这么一个交叉点上,于 2013 年初开始的 Spring Boot 项目的研发,2014年4月,Spring Boot 1.0.0 发布。

(二). Spring Boot 的特性

Spring Boot是在Spring框架基础上创建的一个全新的框架,其设计目的是简化Spring应用的搭建和开发过程,使开发人员快速搭建一个开发框架,它不但具有Spring的所有优秀特性,而且具有如下显著特点: 

1.使用 Spring 项目引导页面可以在几秒构建一个项目2.方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks3.非常简洁的安全策略集成4.支持关系数据库和非关系数据库5.支持运行期内嵌容器,如 Tomcat、Jetty6.强大的开发包,支持热启动7.自动管理依赖8.自带应用监控9.支持各种 IED,如 IntelliJ IDEA 、NetBeans

    Spring Boot 对于一些第三方的技术的使用,提供了非常完美的整合, 使你在简单的使用中,不知不觉运用了非常高级和先进的技术。

Spring Boot主要有如下核心功能:

1.独立运行的Spring项目Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java-jarxxxx.jar类运行。非常方便。
2.内嵌Servlet容器Spring Boot可以内嵌Tomcat,这样我们无需以war包的形式部署项目。
3.提供starter简化Maven配置使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。
4.自动配置Spring5.准生产的应用监控6.无代码生成和xml配置

(三). Spring Boot 项目创建

想要了解Spring Boot,我们先来看看如何创建一个Spring Boot项目,这里以官网 和 IntelliJ IDEA为例(IntelliJ IDEA工具个人感觉相当好用),其他的工具需要的小伙伴可以自行 搜索添加创建

1. 在线创建 Spring Boot项目

首先进入到官网  https://start.spring.io,通过选择配置需要的项目信息:

配置信息:

项目的资源选项,是Maven 还是Gradle 项目开发的语言(Java,Kotlin,Groovy)Spring Boot 版本,目前最新是2.1.9坐标和分组

Options选项设置:
 

  • 选项信息:

1. Name 项目名称2. Descrition 描述信息3. Package Name  包名4. Packaging 打包方式 ,是jar还是war5. Java ,jdk版本
  • 搜索添加其他配置项:

  • 点击输入框,输入 web  添加 Spring Web

  • 点击Generate 创建项目,下载本地

  • 下载到本地的工程 导入idea中,

OK,第一次创建时系统会去下载需要的依赖等,耗时稍长,以后每次都会很快创建好。
OK,项目创建成功之后接下来我们来看看这个东西要怎么样去运行。首先我们看到在项目创建成功之后,在项目的根目录下会有一个artifactId+Application命名规则的入口类,如下图:
 

就是这个DemoApplication类,这是我们整个项目的入口类,这个类有一个@SpringBootApplication注解,这是整个Spring Boot的核心注解,也是一个组合注解,它的目的就是开启Spring Boot的自动配置。OK,我在这个类上再添加一个@RestController注解,使之变为一个Controller,然后里边提供一个地址转换方法,如下:

运行项目

在入口类中添加 函数和请求地址映射的注解,用来请求该地址获取信息

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;//@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})@RestController@SpringBootApplicationpublic class DemoApplication {    @GetMapping(value = "/hello",produces = "text/plain;charset=UTF-8")  //RequestMapping ,GetMapping是一个用来处理请求地址映射的注解,可用于类或方法上    public String Test(){        return "SpringBoot 第一个项目,在入口类中添加";    }    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}

然后点击项目启动按钮运行,在IntelliJ中就是 绿色箭头这个按钮:
 

浏览器中查看项目,打开浏览器,输入 localhost:8080

结果会打印出来信息:SpringBoot 第一个项目,在入口类中添加
 

2. 通过工具Idea创建SpringBoot项目

  • 首先创建一个项目,创建时选择Spring Initializr,然后Next,如图:

点击 Create New Project 创建项目

1,选择 Spring Initralizr 选项

  • 配置信息
    配置信息项和第一种创建信息一样,根据个人需求填写
     

  • 选择加载的Spring Web 资源库
     

  • 确认项目名称和存储地址,点击Finish进行项目创建
     


idea工具创建项目后启动项目和上面第一种的方式一样,请按照第一种添加第一个 Hello Spring Boot  输出。

(四). Spring Boot 核心配置

上面我们了解了如何创建SpringBoot项目,并且在浏览器中访问项目,但是这个是什么原理跑起来的呢,我想小伙伴都有很多疑问,我们就分析一下。

1. 入口类和@SpringBootApplication 
上面我们通过创建项目知道了,每次创建项目系统会给我们生成一个入口类,例如上面的  DemoApplication   入口类中有一个main方法,这个main放在其实就是一个标准的Java 应用的入口方法, 在mian方法中使用 SpringApplication.run(DemoApplication.class, args); 启动Spring Boot 项目。
同时入口类中有一个默认的注解 @SpringBootApplication,该注解是Spring Boot 的核心注解,同时也是一个组合注解,源码如下:

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(    excludeFilters = {@Filter(    type = FilterType.CUSTOM,    classes = {TypeExcludeFilter.class}), @Filter(    type = FilterType.CUSTOM,    classes = {AutoConfigurationExcludeFilter.class})})public @interface SpringBootApplication {    @AliasFor(        annotation = EnableAutoConfiguration.class    )    Class<?>[] exclude() default {};
    @AliasFor(        annotation = EnableAutoConfiguration.class    )    String[] excludeName() default {};
    @AliasFor(        annotation = ComponentScan.class,        attribute = "basePackages"    )    String[] scanBasePackages() default {};
    @AliasFor(        annotation = ComponentScan.class,        attribute = "basePackageClasses"    )    Class<?>[] scanBasePackageClasses() default {};}

通过上面的源码我们可以看到  @SpringBootApplication 注解组合了,如下三个注解:

@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

如果我们不使用 @SpringBootApplication  注解 可以添加这三个注解在入口类中
那么这三个注解的每一个是什么意思呢?

1, SpringBootConfiguration实际上就是@Configuration注解,表明这个类是一个配置类,

2, EnableAutoConfiguration则表示让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置,

3, ComponentScan的作用不在详细描述,需要注意的是如果我们使用了@SpringBootApplication注解的话,系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。
2. 关闭特定的自动配置

上一节我们讲到 组合注解中的 @ComponentScan 注解,该注解有过滤器的作用,如果我们需要关闭特定的自动配置应该使用@SpringBootApplication注解的 exclude参数,例如:
 

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

3. 定制Banner
#修改Banner
在Spring Boot 启动的时候 小伙伴们应该都发现了,有一个默认的启动图案,如下图:

看到上面的图案是不是很神奇,当然这个图案还可以修改,修改起来也很简单,

1,我们在 src/main/resources 下新建一个banner.txt2,通过网站  http://patorjk.com/software/taag/ 官网生成字符,如敲入的为 “SUCCESS”,将生成的字符复杂到banner.txt中

生成字符 如下图:

点击下面的信息复制拷贝,将这个字符拷贝到baner.txt文档中,然后再启动项目,这个时候控制台输出的文本就会自动改变,如下:

#关闭Banner

上面我们修改了Banner当然也可以关闭Banner 需要我们在入口类中调整一下 main方法的代码,代码如下:

public static void main(String[] args) {    SpringApplicationBuilder builder = new SpringApplicationBuilder(Test19SpringBoot2Application.class);    //修改Banner的模式为OFF    builder.bannerMode(Banner.Mode.OFF).run(args);  }

再次运行项目,就不会出现Banner了。

本案例下载地址:
https://github.com/ProceduralZC/itcxzc/tree/master/demo

作者:小小蒲公英

猜你喜欢

转载自blog.csdn.net/jianpengxuexikaifa/article/details/104523317