SpringBoot的底层实现原理是怎样子?

本文介绍了SpringBoot的核心原理,包括其作为一个快速开发框架的作用,通过Maven子父工程方式整合常用依赖,无XML配置全注解化,内置Jetty/Tomcat。重点讲解了SpringBoot如何快速整合第三方依赖,如通过`spring-boot-starter-web`整合SpringMVC,并详细阐述了在没有web.xml的情况下,如何通过Java代码和注解启动SpringMVC容器,以及如何使用Java代码创建内置Tomcat并加载class文件来启动项目。
摘要由CSDN通过智能技术生成

一、什么是SpringBoot?
SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以java应用程序进行执行。

二、SpringBoot核心原理
1.基于SpringMVC无配置文件(纯Java)完全注解化+内置tomcat-embed-core实现SpringBoot框架,Main函数启动。

SpringBoot核心快速整合第三方框架原理:Maven继承依赖关系。
三、SpringBoot重点
3.1:快速整合第三方依赖:maven子父依赖关系。

springboot 通过引用spring-boot-starter-web依赖,整合SpingMVC框架。只需要引用一个jar包,就可以通过Maven继承的方式引用到Spring-aop,Spring-beans,Spring-core,Spring-web等相关依赖。

org.springframework.boot spring-boot-starter-parent 2.0.0.RELEASE org.springframework.boot spring-boot-starter-web
3.2:完全无配置文件(采用注解化)

springboot没有配置文件,如何进行初始化?

在没有web.xml配置文件的情况,通过java代码操作整个SpringMVC的初始化过程,java代码最终会生成class文件,内置Tomcat就会加载这些class文件,当所有程序加载完成后,项目就可以访问了。

以前的web项目,通过Web.xml配置文件加载整个项目流程。

image.png
没有web.xml文件,那么Tomcat是如何启动(注解在什么时候产生)?

在Spring3.0以上(提供注解,在这个版本以后,有了巨大改变,完全不需要任何配置文件加载项目)。

SpringMVC内置注解加载整个SpringMVC容器。相当于使用Java代码编写SpringMVC初始化。

package com.springboot.config; import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver; /** * springmvc 配置信息 * * @EnableWebMvc 开启springmvc 功能
* @作者说明 LongCode
*/@Configuration@EnableWebMvc //此注解就是开启SpringMVC容器@ComponentScan(basePackages = { “com.springboot.controller” })public class WebConfig extends WebMvcConfigurerAdapter { // springboot 整合jsp 最好是war // 需要配置视图转换器 // 创建SpringMVC视图解析器 @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); // 可以在JSP页面中通过${}访问beans viewResolver.setExposeContextBeansAsAttributes(true); return viewResolver; } }
3.3:内置Http服务器

java代码创建Tomcat容器,加载class文件。

package com.springboot; import java.io.File; import javax.servlet.ServletException; import org.apache.catalina.LifecycleException;import org.apache.catalina.WebResourceRoot;import org.apache.catalina.core.StandardContext;import org.apache.catalina.startup.Tomcat;import org.apache.catalina.webresources.DirResourceSet;import org.apache.catalina.webresources.StandardRoot; public class AppTomcat { public static void main(String[] args) throws ServletException, LifecycleException { // 使用Java内置Tomcat运行SpringMVC框架 原理:tomcat加载到 // springmvc注解启动方式,就会创建springmvc容器 start(); } public static void start() throws ServletException, LifecycleException { // 创建Tomcat容器 Tomcat tomcatServer = new Tomcat(); // 端口号设置 tomcatServer.setPort(9090); // 读取项目路径 加载静态资源 StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File(“src/main”).getAbsolutePath()); // 禁止重新载入 ctx.setReloadable(false); // class文件读取地址 File additionWebInfClasses = new File(“target/classes”); // 创建WebRoot WebResourceRoot resources = new StandardRoot(ctx); // tomcat内部读取Class执行 resources.addPreResources( new DirResourceSet(resources, “/WEB-INF/classes”, additionWebInfClasses.getAbsolutePath(), “/”)); tomcatServer.start(); // 异步等待请求执行 tomcatServer.getServer().await(); } }
springBoot框架流程:先创建Tomcat容器,然后加载class文件,加载过程中如果发现有java代码编写的SpringMVC初始化,就会创建SpringMVC容器。所有程序执行完毕后,项目就可以访问了。

http://www.gzslpzx.com/poser.php?157171.html
http://nd.fjmj.org.cn/uploadfile/2020/poser.php?157171.html
http://sz.fjmj.org.cn/uploadfile/2020/poser.php?157171.html
http://na.fjmj.org.cn/uploadfile/2020/poser.php?157171.html
http://zz.fjmj.org.cn/uploadfile/2020/poser.php?157171.html
http://np.fjmj.org.cn/uploadfile/2020/poser.php?157171.html
http://mdzz.itlun.cn/poser.php?157171.html
http://www.xalsh.com/poser.php?157171.html
http://www.gjtuofa.com/uploads/poser.php?157171.html
http://www.yqyy.net/poser.php?157171.html
http://www.bxysg.com/poser.asp?157171.html
http://www.linkcard.cn/poser.asp?157171.html
http://www.airber.com.cn/poser.asp?157171.html
http://www.milient.com/poser.asp?157171.html
http://www.moswe.com/poser.asp?157171.html
http://1798.rongbiz.net/poser.php?157171.html
http://bbs.6y.com.cn/poser.php?157171.html
http://game.6y.com.cn/poser.php?157171.html
http://www.hnalizs.com/poser.php?157171.html
http://www.hnhcnet.com/poser.php?157171.html
http://dxkj.designboom.cn/poser.php?157171.html
http://www.designboom.cn/poser.php?157171.html
http://www.zhjswhw.com/poser.php?157171.html
http://www.gdnhec.com/poser.php?157171.html
http://www.qqql.com.cn/poser.asp?157171.html
http://www.ogood.cn/poser.php?157171.html
http://www.lygwb.com/poser.php?157171.html
http://mzhihui.mulangcm.com/fw/poser.php?157171.html
http://www.ceht.com.cn/default.php?157171.html
http://www.aselock.com.cn/poser.asp?157171.html
http://www.spark-lock.com/poser.asp?157171.html
http://www.fsruijian.net/poser.php?157171.html
http://www.whbts.com/poser.asp?157171.html
http://www.xdmonitor.com/poser.asp?157171.html
http://m.cquedp.com/157171.html
http://cquedp.com/157171.html
http://mdzz.itlun.cn/157171.html
http://m.cntricycle.com/157171.html
http://www.cquedp.com/poser.php?157171.html
http://szgc.glodon.com/poser.php?157171.html
http://sz.glodon.com/poser.php?157171.html
http://www.gzslpzx.com/poser.php?919799.html
http://nd.fjmj.org.cn/uploadfile/2020/poser.php?919799.html
http://sz.fjmj.org.cn/uploadfile/2020/poser.php?919799.html
http://na.fjmj.org.cn/uploadfile/2020/poser.php?919799.html
http://zz.fjmj.org.cn/uploadfile/2020/poser.php?919799.html
http://np.fjmj.org.cn/uploadfile/2020/poser.php?919799.html
http://mdzz.itlun.cn/poser.php?919799.html
http://www.xalsh.com/poser.php?919799.html
http://www.gjtuofa.com/uploads/poser.php?919799.html
http://www.yqyy.net/poser.php?919799.html
http://www.bxysg.com/poser.asp?919799.html
http://www.linkcard.cn/poser.asp?919799.html
http://www.airber.com.cn/poser.asp?919799.html
http://www.milient.com/poser.asp?919799.html
http://www.moswe.com/poser.asp?919799.html
http://1798.rongbiz.net/poser.php?919799.html
http://bbs.6y.com.cn/poser.php?919799.html
http://game.6y.com.cn/poser.php?919799.html
http://www.hnalizs.com/poser.php?919799.html
http://www.hnhcnet.com/poser.php?919799.html
http://dxkj.designboom.cn/poser.php?919799.html
http://www.designboom.cn/poser.php?919799.html
http://www.zhjswhw.com/poser.php?919799.html
http://www.gdnhec.com/poser.php?919799.html
http://www.qqql.com.cn/poser.asp?919799.html
http://www.ogood.cn/poser.php?919799.html
http://www.lygwb.com/poser.php?919799.html
http://mzhihui.mulangcm.com/fw/poser.php?919799.html
http://www.ceht.com.cn/default.php?919799.html
http://www.aselock.com.cn/poser.asp?919799.html
http://www.spark-lock.com/poser.asp?919799.html
http://www.fsruijian.net/poser.php?919799.html
http://www.whbts.com/poser.asp?919799.html
http://www.xdmonitor.com/poser.asp?919799.html
http://m.cquedp.com/919799.html
http://cquedp.com/919799.html
http://mdzz.itlun.cn/919799.html
http://m.cntricycle.com/919799.html
http://www.cquedp.com/poser.php?919799.html
http://szgc.glodon.com/poser.php?919799.html
http://sz.glodon.com/poser.php?919799.html
http://www.gzslpzx.com/poser.php?177573.html
http://nd.fjmj.org.cn/uploadfile/2020/poser.php?177573.html
http://sz.fjmj.org.cn/uploadfile/2020/poser.php?177573.html
http://na.fjmj.org.cn/uploadfile/2020/poser.php?177573.html
http://zz.fjmj.org.cn/uploadfile/2020/poser.php?177573.html
http://np.fjmj.org.cn/uploadfile/2020/poser.php?177573.html
http://mdzz.itlun.cn/poser.php?177573.html
http://www.xalsh.com/poser.php?177573.html
http://www.gjtuofa.com/uploads/poser.php?177573.html
http://www.yqyy.net/poser.php?177573.html
http://www.bxysg.com/poser.asp?177573.html
http://www.linkcard.cn/poser.asp?177573.html
http://www.airber.com.cn/poser.asp?177573.html
http://www.milient.com/poser.asp?177573.html
http://www.moswe.com/poser.asp?177573.html
http://1798.rongbiz.net/poser.php?177573.html
http://bbs.6y.com.cn/poser.php?177573.html
http://game.6y.com.cn/poser.php?177573.html
http://www.hnalizs.com/poser.php?177573.html
http://www.hnhcnet.com/poser.php?177573.html
http://dxkj.designboom.cn/poser.php?177573.html
http://www.designboom.cn/poser.php?177573.html
http://www.zhjswhw.com/poser.php?177573.html
http://www.gdnhec.com/poser.php?177573.html
http://www.qqql.com.cn/poser.asp?177573.html
http://www.ogood.cn/poser.php?177573.html
http://www.lygwb.com/poser.php?177573.html
http://mzhihui.mulangcm.com/fw/poser.php?177573.html
http://www.ceht.com.cn/default.php?177573.html
http://www.aselock.com.cn/poser.asp?177573.html
http://www.spark-lock.com/poser.asp?177573.html
http://www.fsruijian.net/poser.php?177573.html
http://www.whbts.com/poser.asp?177573.html
http://www.xdmonitor.com/poser.asp?177573.html
http://m.cquedp.com/177573.html
http://cquedp.com/177573.html
http://mdzz.itlun.cn/177573.html
http://m.cntricycle.com/177573.html
http://www.cquedp.com/poser.php?177573.html
http://szgc.glodon.com/poser.php?177573.html
http://sz.glodon.com/poser.php?177573.html
http://www.gzslpzx.com/poser.php?319193.html
http://nd.fjmj.org.cn/uploadfile/2020/poser.php?319193.html
http://sz.fjmj.org.cn/uploadfile/2020/poser.php?319193.html
http://na.fjmj.org.cn/uploadfile/2020/poser.php?319193.html
http://zz.fjmj.org.cn/uploadfile/2020/poser.php?319193.html
http://np.fjmj.org.cn/uploadfile/2020/poser.php?319193.html
http://mdzz.itlun.cn/poser.php?319193.html
http://www.xalsh.com/poser.php?319193.html
http://www.gjtuofa.com/uploads/poser.php?319193.html
http://www.yqyy.net/poser.php?319193.html
http://www.bxysg.com/poser.asp?319193.html
http://www.linkcard.cn/poser.asp?319193.html
http://www.airber.com.cn/poser.asp?319193.html
http://www.milient.com/poser.asp?319193.html
http://www.moswe.com/poser.asp?319193.html
http://1798.rongbiz.net/poser.php?319193.html
http://bbs.6y.com.cn/poser.php?319193.html
http://game.6y.com.cn/poser.php?319193.html
http://www.hnalizs.com/poser.php?319193.html
http://www.hnhcnet.com/poser.php?319193.html
http://dxkj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值