SpringBoot原理

SpringBoot是什么

Springboot是一个微服务框架,延续了spring框架的核心思想IOC和AOP,简化了应用的开发和部署。 Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。

为什么用SpringBoot

spring boot来简化spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

Spring Boot 优点非常多,如:

一、独立运行
Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。

二、简化配置
spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。

三、自动配置
Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。

四、无代码生成和XML配置
Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。

五、应用监控
Spring Boot提供一系列端点可以监控服务及应用,做健康检测。

SpringBoot优点

  •  Create stand-alone Spring applications
               创建独立Spring应用
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
               内嵌web服务器
  •  Provide opinionated 'starter' dependencies to simplify your build configuration
               自动starter依赖,简化构建配置 
  • Automatically configure Spring and 3rd party libraries whenever possible
               自动配置Spring以及第三方功能 
  • Provide production-ready features such as metrics, health checks, and externalized configuration
               提供生产级别的监控、健康检查及外部化配置
  •  Absolutely no code generation and no requirement for XML configuration
               无代码生成、无需编写XML

SpringBoot缺点

  • 人称版本帝,迭代快,需要时刻关注变化
  • 封装太深,内部原理复杂,不容易精通

SpringBoot核心原理

1.约定大于配置

在开发的时候,spring中90%的配置都一样,只有一些特殊的配置不一样,所以springboot做了优化,springboot有通用的配置,不需要再手动的去进行繁琐的配置。

----springboot 默认有 resources 文件夹存放配置文件

----springboot 默认打包方式为 jar

----springboot默认提供 application.properties/yml 文件用来配置

----此特性, 帮助程序猿减负, 减少了大量的配置.

2.内嵌Tomcat或Jetty等Servlet容器

spring-boot-starter-web 中默认包含 spring mvc 相关依赖以及内置的 tomcat 容器,使 得构建一个 web 应用更加简单

3.绝对没有代码生成,不需要XML配置

springboot简化了spring不需要xml配置文件,只使用了主配置类,springboot也可以在类中通过注解的方式将类注入到spring IoC容器中

4.快速的将一些常用的第三方框架整合

springboot通过maven子父依赖关系来快速整合依赖
springboot 通过引用spring-boot-starter-web依赖,整合spingMVC框架。只需要引用一个jar包,就可以通过maven继承的方式引用到spring-aop,spring-beans,spring-core,spring-web等相关依赖。

springboot启动原理

我们开发每一个springboot项目都需要一个主启动类

package com.wh.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

springboot主启动类中有一个 @SpringBootApplication 注解,和包含一个 SpringApplication.run类定义的main方法

@SpringBootApplication 注解

ctrl+鼠标左键点进去@SpringBootApplication,可以看到

@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个复合注解(在springboot复合注解可以理解为: 一个注解中也有其他的注解 ,而这个复合注解也 拥有其他注解的功能 )

@SpringBootApplication注解中其中三个注解最为重要
@Configuration(@SpringBootConfiguration点开查看发现里面还是应用了@Configuration)
@EnableAutoConfiguration
@ComponentScan

1.@Configuration
在启动类里面标注了@Configuration,意味着它其实也是一个 Ioc
容器的配置类,在这个配置类里可以进行注入Bean的操作

@Configuration //告诉SpringBoot这是一个配置类 == 配置文件
public class MyConfig {

    @Bean
    public String tom(){
    return "tomcat";
    }

}

图片中的操作相等于spring使用xml配置文件进行注入bean的操作:

//spring使用xml配置文件进行注入bean

<bean class="java.lang.String" id="tom">
        <constructor-arg type="java.lang.String" value="tomcat"/>
</bean>

2.@ComponentScan

ComponentScan 默认会扫描当前 package 下的的所有加
了@Component 、@Repository、@Service、@Controller的类到 IoC 容器中。

3.@EnableAutoConfiguration

@EnableAutoConfiguration这个注解在springboot中非常重要

@EnableAutoConfiguration是一个复合注解,其中的@Import很重要

@EnableAutoConfiguration是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器.

@EnableAutoConfiguration会根据类路径中的jar依赖为项目进行自动配置,如:添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,Spring Boot会对Tomcat和Spring MVC进行自动配置。

!!在添加了一个依赖后,@EnableAutoConfiguration 会对跟这个依赖相关的东西进行一个配置.

以上就是springboot的大概原理,大家如果想知道spring的相关内容可以去spring官网看一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值