Spring boot底层实现原理

SpringBoot快速入门
SpringBoot由Pivotal团队提供,旨在简化Spring应用的搭建和开发。通过自动化配置,使用SpringBoot可轻松管理jar依赖,简化应用编译和部署。本文详解SpringBoot整合SpringMVC的实践,包括无配置文件的注解化应用和内置HTTP服务器的创建。

Spring boot简介

1.Spring Boot是什么?

Spring Boot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。

2.为什么要使用Spring Boot?

Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性。

3.SpringBoot重点

1.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>

2.完全无配置文件(采用注解化)
springboot没有配置文件,如何进行初始化?
在没有web.xml配置文件的情况,通过java代码操作整个SpringMVC的初始化过程,java代码最终会生成class文件,内置Tomcat就会加载这些class文件,当所有程序加载完成后,项目就可以访问了。

以前的web项目,通过Web.xml配置文件加载整个项目流程。
在这里插入图片描述
3.没有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> * 
*  */
@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;	} }	

4.内置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(); 	} }

完成

Spring Boot是一个基于Spring框架的快速开发框架,它的核心原理是基于注解驱动来实现Spring Boot在启动时会自动扫描所有的注解,然后通过反射机制来实例化对象,从而构建整个应用程序。 下面是Spring Boot底层原理: 1. 自动配置 Spring Boot的自动配置是其核心原理之一。在应用启动时,Spring Boot会自动扫描应用的依赖关系并进行配置。这意味着,开发者只需要在代码中添加一些基本配置,Spring Boot就会自动根据应用的需要进行适当的配置。 2. 嵌入式Tomcat Spring Boot还内置了一个嵌入式Tomcat容器,这使得开发者可以非常方便地将应用程序打包成一个可执行的jar文件,而不需要安装任何其他的服务器。 3. Spring Boot Starter Spring Boot Starter是Spring Boot的另一个核心概念。它是一个预定义的依赖关系集合,可以帮助开发者快速地配置应用程序所需的依赖项。例如,如果您想要使用Spring Data JPA来访问数据库,您只需要添加一个spring-boot-starter-data-jpa的依赖项,Spring Boot就会自动配置Spring Data JPA。 4. Spring Boot Actuator Spring Boot Actuator是Spring Boot的另一个重要特性。它提供了一组RESTful API,可以用于监控和管理应用程序。例如,您可以使用Spring Boot Actuator来查看应用程序的健康状况、性能指标等。 总之,Spring Boot底层原理是基于注解驱动的自动配置,通过自动扫描依赖关系和预定义的依赖项集合来实现。同时,它还提供了嵌入式Tomcat容器和Spring Boot Actuator等特性,使得开发者可以更加方便地开发和管理应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值