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没有配置⽂件,如何进⾏初始化?
在没有l配置⽂件的情况,通过java代码操作整个SpringMVC的初始化过程,java代码最终会⽣成class⽂件,内置Tomcat就会加载这些class⽂件,当所有程序加载完成后,项⽬就可以访问了。
以前的web项⽬,通过l配置⽂件加载整个项⽬流程。
没有l⽂件,那么Tomcat是如何启动(注解在什么时候产⽣)?
在Spring3.0以上(提供注解,在这个版本以后,有了巨⼤改变,完全不需要任何配置⽂件加载项⽬)。SpringMVC内置注解加载整个SpringMVC容器。相当于使⽤Java代码编写SpringMVC初始化。
package fig;
import t.annotation.Bean;
import t.annotation.ComponentScan;
import t.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.fig.annotation.EnableWebMvc;
import org.springframework.fig.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* springmvc 配置信息
*
* @EnableWebMvc 开启springmvc 功能<br>
* @作者说明 LongCode <br>
*/
@Configuration
@EnableWebMvc //此注解就是开启SpringMVC容器
@ComponentScan(basePackages = { "ller" })
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.StandardContext;
import org.apache.catalina.startup.Tomcat;
springboot框架是干嘛的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", AbsolutePath(), "/"));
tomcatServer.start();
// 异步等待请求执⾏
}
}
springBoot框架流程:先创建Tomcat容器,然后加载class⽂件,加载过程中如果发现有java代码编写的SpringMVC初始化,就会创建SpringMVC容器。所有程序执⾏完毕后,项⽬就可以访问了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论