Spring Boot (一)初识Spring Boot框架

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

前言
(一). Spring Boot 的诞生

(二). Spring Boot 的特性

(三). Spring Boot项目创建

(四). Spring Boot 的核心配置

Spring Boot (一)初识Spring Boot框架_第1张图片

 

(一). 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,通过选择配置需要的项目信息:

Spring Boot (一)初识Spring Boot框架_第2张图片

配置信息:

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

Options选项设置:
 

Spring Boot (一)初识Spring Boot框架_第3张图片

  • 选项信息:

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

Spring Boot (一)初识Spring Boot框架_第4张图片

 

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

Spring Boot (一)初识Spring Boot框架_第5张图片

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

Spring Boot (一)初识Spring Boot框架_第6张图片

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

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

Spring Boot (一)初识Spring Boot框架_第7张图片

就是这个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 第一个项目,在入口类中添加
 

Spring Boot (一)初识Spring Boot框架_第8张图片

 

 

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

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

Spring Boot (一)初识Spring Boot框架_第9张图片

点击 Create New Project 创建项目

Spring Boot (一)初识Spring Boot框架_第10张图片

1,选择 Spring Initralizr 选项

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

    Spring Boot (一)初识Spring Boot框架_第11张图片

  • 选择加载的Spring Web 资源库
     

    Spring Boot (一)初识Spring Boot框架_第12张图片

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

    Spring Boot (一)初识Spring Boot框架_第13张图片


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 启动的时候 小伙伴们应该都发现了,有一个默认的启动图案,如下图:

 

Spring Boot (一)初识Spring Boot框架_第14张图片

 

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

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

生成字符 如下图:

Spring Boot (一)初识Spring Boot框架_第15张图片

 

点击下面的信息复制拷贝,将这个字符拷贝到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

作者:小小蒲公英

你可能感兴趣的:(Spring,Boot_Spring,Cloud,架构)