栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot源码解析:Spring 和 Spring Boot 有哪些区别?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot源码解析:Spring 和 Spring Boot 有哪些区别?

手写一个Spring Boot

当别人问你Spring和Spring Boot的区别时,你可能会随口而出

  1. 应用可以直接运行,而不用打成jar包再放到tomcat中运行
  2. 当使用某些功能时,引入相应的starter即可,不用再配置各种Bean了

其实我觉得自动装配才是Spring Boot最大的创新。应用直接运行我们用嵌入式tomcat就可以办到。我们把之前的spring mvc项目改为直接运行

依赖如下


  org.springframework
  spring-context
  5.2.19.RELEASE


  org.springframework
  spring-webmvc
  5.2.19.RELEASE


  org.apache.tomcat.embed
  tomcat-embed-core
  8.0.28


  org.apache.tomcat.embed
  tomcat-embed-logging-juli
  8.0.28


  org.apache.tomcat.embed
  tomcat-embed-jasper
  8.0.28




这3个类就是我们之前分析Spring MVC源码用到的,工作原理我就不再重复了。现在我们要把它改造为直接通过main方法运行


点击main方法即可运行。

一个典型的Spring Boot的启动类如下

@SpringBootApplication
public class BlogApplication {
	public static void main(String[] args) {
		SpringApplication.run(BlogApplication.class, args);
	}
}

写成如下形式你可能更好理解

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class BlogConfiguration {
}


public class BlogApplication {
	public static void main(String[] args) {
		SpringApplication.run(BlogConfiguration.class, args);
	}
}

Spring Boot的源码和我们代码的区别就是

Spring容器是在main中启动spring容器和tomcat的,在WebApplicationInitializer实现类中,将DispatcherServlet注册到tomcat中
而我们的代码只在main方法中启动了tomcat容器,在WebApplicationInitializer实现类中启动spring容器和将DispatcherServlet注册到tomcat中。你可以将上面的代码改一下,改成和Spring容器一样的形式

所以我们把spring boot的启动流程和自动装配是如何实现的搞懂,基本上就把spring boot搞懂了。

参考博客
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号