SpringBoot源码解析(1.1)-自动装配概念
前言
解释 SpringBoot 自动装配前可以先回忆一下在没有springboot框架前如何使用spring springmvc 框架搭建一个web项目:
① 引入依赖
spring-core
spring-beans
spring-context
spring-aop
spring-tx
spring-jdbc
spring-web
spring-webmvc
② 配置 spring.xml
applicationContext.xml (添加component-scan扫描 ,如果连接数据库,需要配置数据源,sessionFactory,transactionManager事务管理器 等)
③ 配置 spring-mvc.xml
④ 配置 web.xml
⑤ 部署到 servlet容器,如Tomcat
如何使用springboot框架搭建一个web项目:
① 添加起步依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo</name>
<description>springboot-demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
② 编写启动类
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
对比两种方式,springboot 框架甚至都不用手动部署到外部servlet容器,因为它内部默认嵌入了tomcat,明显springboot框架使用起来更加简单快捷,除了启动类中有 @SpringBootApplication 注解外,我们并没有额外添加其他配置。
之所以使用简单,是因为springboot帮我们做了很多事情,比如起步依赖帮我们引入了web项目需要的相关依赖,而其他配置,比如servlet的默认值配置,日志log4j配置也是它帮我们完成,这就是springboot自动装配的概念,也是本文要解析的重点