配置优先级
配置文件
**优先级:**applicaton.properties > application.yml > application.yaml

Java系统属性和命令行参数
优先级: 命令行参数 > Java系统属性


优先级

Bean管理
获取bean

例如:
java
@Autowired
private ApplicationContext applicationContext; //IOC容器对象
//获取bean对象
@Test
public void testGetBean(){
//根据bean的名称获取
DeptController bean1 = (DeptController) applicationContext.getBean("deptController");
System.out.println(bean1);
//根据bean的类型获取
DeptController bean2 = applicationContext.getBean(DeptController.class);
System.out.println(bean2);
//根据bean的名称 及 类型获取
DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);
System.out.println(bean3);
}
bean的作用域

设置bean的作用域

第三方bean

SpringBoot原理
起步依赖
起步依赖的原理就是maven传递

自动配置
概述

方案
方案一:@ComponentScan组件扫描

方案二:@Import导入

例如:
java
package com.itheima;
import com.example.EnableHeaderConfig;
import com.example.HeaderConfig;
import com.example.MyImportSelector;
import com.example.TokenParser;
import org.dom4j.io.SAXReader;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.function.ServerRequest;
//@ComponentScan({"com.example","com.itheima"})
//@Import({TokenParser.class}) //导入普通类,交给IOC容器管理
//@Import({HeaderConfig.class}) //导入配置类,交给IOC容器管理
//@Import({MyImportSelector.class}) //导入ImportSelector接口实现类
@EnableHeaderConfig
@SpringBootApplication
public class SpringbootWebConfig2Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootWebConfig2Application.class, args);
}
// //声明第三方bean
// @Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean
// public SAXReader saxReader(){
// return new SAXReader();
// }
}
源码跟踪

自动配置原理

条件装配注解@Conditional

例如:

自动配置原理

案例(自定义starter分析)
应用场景

分析

Web后端开发-总结
