javascript
轻松理解之SpringBoot实现原理
一、什么是SpringBoot?
???????????SpringBoot是一個快速開發框架,快速的將一些常用的第三方依賴整合(原理:通過Maven子父工程的方式),簡化XML配置,全部采用注解形式,內置Http服務器(Jetty和Tomcat),最終以java應用程序進行執行。
二、SpringBoot核心原理
1> 基于SpringMVC無配置文件(純Java)完全注解化+內置tomcat-embed-core實現SpringBoot框架,Main函數啟動。
2> SpringBoot核心快速整合第三方框架原理:Maven繼承依賴關系。
三、SpringBoot重點
3.1:快速整合第三方依賴:maven子父依賴關系。
springboot 通過引用spring-boot-starter-web依賴,整合SpingMVC框架。只需要引用一個jar包,就可以通過Maven繼承的方式引用到Spring-aop,Spring-beans,Spring-core,Spring-web等相關依賴。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version> </parent> <dependencies><!-- SpringBoot 整合SpringMVC --><!-- 為什么我們映入spring-boot-starter-web 能夠幫我整合Spring環境 原理通過Maven子父 工程 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>3.2:完全無配置文件(采用注解化)
springboot沒有配置文件,如何進行初始化?
在沒有web.xml配置文件的情況,通過java代碼操作整個SpringMVC的初始化過程,java代碼最終會生成class文件,內置Tomcat就會加載這些class文件,當所有程序加載完成后,項目就可以訪問了。
以前的web項目,通過Web.xml配置文件加載整個項目流程。
沒有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 功能<br>* @作者說明 LongCode <br>*/ @Configuration @EnableWebMvc //此注解就是開啟SpringMVC容器 @ComponentScan(basePackages = { "com.springboot.controller" }) public class WebConfig extends WebMvcConfigurerAdapter {// springboot 整合jsp 最好是war// 需要配置視圖轉換器// 創建SpringMVC視圖解析器@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/views/");viewResolver.setSuffix(".jsp");// 可以在JSP頁面中通過${}訪問beansviewResolver.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");// 創建WebRootWebResourceRoot 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容器。所有程序執行完畢后,項目就可以訪問了。
總結
以上是生活随笔為你收集整理的轻松理解之SpringBoot实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻松解决(,|)和(and,or)之间的
- 下一篇: JavaScript常用API总结