精华内容
下载资源
问答
  • SpringBoot底层原理

    2020-08-23 23:38:50
    SpringBoot底层原理一.SpringBoot是什么?二.SpringBoot核心原理 一.SpringBoot是什么? 想要了解springboot底层原理必须要先知道springboot是什么?作用是什么? SpringBoot是一个基于spring的快速开发框架,简化了...

    一.SpringBoot是什么?

    想要了解springboot底层原理必须要先知道springboot是什么?作用是什么?

    SpringBoot是一个基于spring的快速开发框架,简化了spring。启动快,开发时方便,可以快速整合第三方依赖,解决了架包版本冲突

    二.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的操作

    在这里插入图片描述
    图片中的操作相等于spring使用xml配置文件进行注入bean的操作:

    //spring使用xml配置文件进行注入bean
    
    <bean class="java.lang.String" id="str">
            <constructor-arg type="java.lang.String" value="str"/>
    </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官网看一下。

    展开全文
  • springboot底层原理浅探

    2020-08-25 11:57:53
    springboot底层原理浅探什么是springboot约定优于配置maven核心重要注解内置Tomcat 什么是springboot 它是一个服务于spring框架的框架,能够简化配置文件,快速构建web应用, 内置tomcat,无需打包部署,直接运行。 ...

    什么是springboot

    它是一个服务于spring框架的框架,能够简化配置文件,快速构建web应用,
    内置tomcat,无需打包部署,直接运行。
    

    约定优于配置

       如果配置太多,就加大了人类的思维工作负担,不符合人类利用机器偷懒的初衷。干脆为所有配置提供一个默认选择,或者提供一个自助决策规则,如此建立起人与机器的基本约定。这样在其他类似场景中,机器工具就可以拿来即用。
    所以约定大于配置,其实是要建立起尽力减少配置项,采用约定方案的思想。
       约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。
    约定优于配置可以从以下两个方面来理解:
        1. 开发人员仅需规定应用中不符合约定的部分
        2. 在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想
    

    maven核心

    1. Maven的目录结构。默认有resources文件夹,存放资源配置文件。src-main-resources,src-main-java。默认的编译生成的类都在targe文件夹下面
    2. spring boot默认的配置文件必须是,也只能是application.命名的yml文件或者properties文件,且唯一application.yml中默认属性。
    3. 数据库连接信息必须是以spring: datasource: 为前缀;多环境配置。该属性可以根据运行环境自动读取不同的配置文件;端口号、请求路径等
    4. maven一套依赖帮我们默认配置

    重要注解

    springboot web启动器
    在这里插入图片描述
    @SpringBootApplication 表明这是springboot启动类
    在这里插入图片描述
    @ComponentScan
    @ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。

    @EnableAutoConfiguration
    在这里插入图片描述
    这个注解,它所加的组件就是我们在pom中申明的组件以及springBoot默认提供给我们用的组件,将组件实例化,交由IOC容器去管理。

    @AutoConfigurationPackage
    添加该注解的类所在的package 作为 自动配置package 进行管理。在这里插入图片描述
    从根本上来说,@ImportAutoConfiguration是@Import的增强,限制了它使用的特定范围。
    使用@EnableAutoConfiguration时会扫描整个类路径下,包括依赖引入的jar包所有的自动配置类(被注解了@Configuration的类),尝试进行自动配置。比如,tomcat-embedded.jar。
    而@ImportAutoConfiguration只运行在你注解中提供的配置类。
    @ImportAutoConfiguration与@EnableAutoConfiguration的功能更相似,而且能够更细粒度的控制导入的类。

    内置Tomcat

    yml文件常用配置
    

    在这里插入图片描述
    内置tomcat的配置是通过ServerProperties来读取配置的,可以根据该类的属性来反推yml文件的配置字段。
    通过EmbeddedServletContainerCustomizerBeanPostProcessor将我们在yml配置文件中设置的配置与TomcatEmbeddedServletContainerFactory进行绑定。

    展开全文
  • 大家好,我是猿猴小冷,今天给大家分享一下SpringBoot底层原理 一、入口类的源码解析 1. 入口类 package com.lq.consumer_user; import org.springframework.boot.SpringApplication; import org.springframework...

    大家好,我是猿猴小冷,今天给大家分享一下SpringBoot的底层原理

    一、入口类的源码解析

    1. 入口类

    package com.lq.consumer_user;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    
    @SpringBootApplication
    public class ConsumerUserApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConsumerUserApplication.class, args);
        }
    
    }
    

    2. @SpringBootApplication 核心注解源码分析

    Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。
    主要组成:@SpringBootConfiguration,@EnableAutoConfiguration以及@ComponentScan这三个注解

    
    @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 {
    
    
    a. @SpringBootConfiguration 注解

    Spring Boot的配置类: 标注在某个类上,表示一个类提供了Spring Boot应用程序

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Configuration
    public @interface SpringBootConfiguration {
    

    (1) @Configuration:配置类上来标注这个注解:来标注这个类是个配置类

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Configuration {
    

    注意:配置类相当于配置文件;配置类也是容器中的一个组件,它使用了@Component这个注解。

    3. @EnableAutoConfiguration 注解

    告诉SpringBoot开启自动配置功能,这样自动配置才能生效,借助@import,扫描并实例化满足条件的自动配置的bean,然后加载到IOC容器中。

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @AutoConfigurationPackage
    @Import(AutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {
    
    	String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    
    	/**
    	 * Exclude specific auto-configuration classes such that they will never be applied.
    	 * @return the classes to exclude
    	 */
    	Class<?>[] exclude() default {};
    
    	/**
    	 * Exclude specific auto-configuration class names such that they will never be
    	 * applied.
    	 * @return the class names to exclude
    	 * @since 1.3.0
    	 */
    	String[] excludeName() default {};
    
    }
    

    @AutoConfigurationPackage:自动配置包
    @Import(EnableAutoConfigurationImportSelector.class):给容器中导入组件

    4. @ComponentScan 注解

    @ComponentScan就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IOC容器中去 。

    展开全文
  • springboot底层原理简述

    2019-09-22 13:57:16
    1.maven 子父依赖关系,快速整合第三方框...spring3.0以上提供注解,springboot通过java语言编写springmvc配置初始化,包括访问路径,视图解析器,也初始化非springmvc配置文件 3.内置tomcat 通过java语言创建tom...

    1.maven

    子父依赖关系,快速整合第三方框架

    2.无配置文件

    省略了web.xml,spring.xml,springmvc.xml.mybatis.xml。

    spring3.0以上提供注解,springboot通过java语言编写springmvc配置初始化,包括访问路径,视图解析器,也初始化非springmvc配置文件

    3.内置tomcat

    通过java语言创建tomcat,读取class文件到内存,由tomcat执行

    转载于:https://www.cnblogs.com/a1304908180/p/11326178.html

    展开全文
  • SpringBoot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式(继承starter,约定优先于配置)来进行配置,从而使开发人员不再需要定义样板化的配置。...
  • 课程目录: 1.Spring Boot概述与课程概要介绍 2.Spring4 快速入门 3.Spring4 扩展分析(一) 4.Spring4 扩展分析(二) 5.Spring Boot 快速入门 ...6.Spring Boot 配置分析(一...9.Spring Boot @Enable注解的工作原理 ...
  • 课程目录: 1.Spring Boot概述与课程概要介绍 2.Spring4 快速入门 3.Spring4 扩展分析(一) 4.Spring4 扩展分析(二) 5.Spring Boot 快速入门 ...6.Spring Boot 配置分析(一...9.Spring Boot @Enable注解的工作原理 ...
  • 课程目录: 1.Spring Boot概述与课程概要介绍 2.Spring4 快速入门 3.Spring4 扩展分析(一) 4.Spring4 扩展分析(二) 5.Spring Boot 快速入门 ...6.Spring Boot 配置分析(一...9.Spring Boot @Enable注解的工作原理 ...
  • 课程目录: 1.Spring Boot概述与课程概要介绍 2.Spring4 快速入门 3.Spring4 扩展分析(一) 4.Spring4 扩展分析(二) 5.Spring Boot 快速入门 ...6.Spring Boot 配置分析(一...9.Spring Boot @Enable注解的工作原理 ...
  • 9.Spring Boot @Enable注解的工作原理 10.Spring Boot @EnableAutoConfiguration深入分析 11.Spring Boot 事件监听 12.Spring Boot 扩展分析 13.Spring Boot 补充讲解 14.Spring Boot...
  • SpringBoot底层实现原理

    千次阅读 2019-04-10 16:42:49
    <groupId>org.springframework.boot <artifactId>spring-boot-starter-parent <version>2.0.0.RELEASE <!-- SpringBoot 整合...-- 为什么我们映入spring-boot-starter-web 能够帮我整合Spring环境 原理
  • Springboot是spring家族目前最厉害的成员之一,你们知道它的底层原理是什么吗?又有什么概念呢?下面跟着小编一起来了解一下吧。一、概念SpringBoot,它是由Pivotal团队支持提供的全新框架,由于spring配置太过繁琐,...
  • SpringBoot简介 Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的...
  • @SprigBootApplication十个组合注解 @SprigBootConfiguration... @Import(Auto....Registar.class) :spring底层导入组件的注解 将主配置类所在包下面的所有自爆里面的所有组件扫描到spring容器中 @EnableAuto...
  • Springboot启动原理底层源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 643
精华内容 257
关键字:

springboot底层原理

spring 订阅