本文章算是給尚硅谷-SpringBoot學習先打基礎了,後面看SpringBootApplication源碼的時候能更清晰
視頻地址:https://www.bilibili.com/video/BV1gW411W7wy?p=61&vd_source=510ec700814c4e5dc4c4fda8f06c10e8
🔥1. 容器篇
1.1. IOC-基本註解
1.1.1 @Lazy
針對單實例,在調用容器時才加載bean
1.1.2 @Conditional
- 自定義類實現Condition接口,然後配置條件
- @Conditional可以引用上面自定義類,然後加載類或者方法上,只有滿足條件才能注入@Bean
1.1.3 @Import
1.1.3.1 基本注入組件方法
給容器註冊組件方法:
- 包掃描+組件掃描:修飾類就能創建一個對象
- @Bean注入 (配合@Configuration):本質就是修飾方法,然後創建一個對象
- @Import快速導入(配合@Configuration):注入進去的類型,也就是類的路徑
- 使用@EnableConfigurationProperties
- 使用FactoryBean
- 就是實現FactoryBean接口,然後利用@Bean註冊這個工廠bean,這樣就能實現行的Bean注入
注入屬性:
1. @ConfigurationProperties + @Component
1. @Value
裝配組件(上面註冊主鍵後就能使用):
1. @Autowired:可以修飾方法和構造器,就是IOC容器中獲取到這個相應名字的對象(就等同於之前set函數賦值對象的操作)
1. @Resource
1. @Inject(和@Autowired等價):需要導入包,java規範
1.本質就是單例Controller組件,然後內部使用@Autowired注入IOC容器中各個Bean,有衝突就使用@Qualifier
2.各個底層又是使用new 各個對象,保證了每個線程方法訪問不會衝突。
@Configuration組件上可以使用組件掃描@ComponentScan把各個組件加載到本類中來
1.1.3.2 @ImportSelector, @ImportDefinBEAN(略)
1.1.4 Bean--執行初始化/銷燬方法
就是初始化Bean後,想執行自定義關於這個Bean的初始化和銷燬方法怎麼弄
1.1.4.1 @Bean註解
@Bean(initMethod = "Bean類中的初始化方法", destroyMethod = "Bean類中的銷燬方法")
1.1.4.2 JSR250--@PostConstruct/@PreDestory
@PostConstruct:在bean初始化與構造器屬性
@PreDestory:容器銷燬Bean前的清理工作
1.1.4.3 BeanPostProcessor
後置處理器:BeanPostProcessor
1.2 AOP--@EnableAspectJAutoProxy(略)
@EnableAspectJAutoProxy:雷神說必須要開啓,但是實際用AOP切面的時候不開啓也能使用,而且我開啓這個註解主要是在事務傳播行爲的時候用到,有待商榷吧。
1.3 聲明式事務--@EnableTransactionManagement(略)
@EnableTransactionManagement:事務管理器,我也沒用到也能使用事務管理。
🔥2. 擴展原理篇
2.1.Spring源碼(略)
就是把bean全加載進來,然後使用餓漢或者懶漢加載(默認餓漢,可由用戶自定義)