空虛寂寞冷? 別擔心,你還有鐵人賽。
今天挑戰第 14 天,加油!
大家安安,感覺講Spring Boot就要講到IOC
可以先去看 上上(?)篇,講解DI
複習一下,主要目的:
1.讓他是低耦合程式,高耦合程式會有很多問題
ex:改了一個class整隻就有很多問題,或是分開測試的時候會很麻煩
2.缺點 : 載入通常會比較久
控制反轉 - IOC
將控制權交到Spring Boot的手上,讓Spring管理程式中的Bean
依賴注入 - DI
為實現IOC的手段之一,讓Spring能夠自動創建所需的Bean,並注入到需要這些Bean的地方
那就 開始拔
看core Container的地方
從 sping 到 sping boot,sping 主要是有很多xml配置文件,sping boot 則是變成自動配置
大概的步驟就是
開始 -> 找到反轉控制的Bean/東西 -> 在container中創建實例並存起來
當要用的時候(@autowired) ->在找到拿出來
被控制的Bean有 ->
1.@Component : 所有的Bean託管組件的通用類型
2.@Service : 主要應用在服務層,並有業務邏輯
以MVC來說,contoller 跟 model中間加入一個service類型,讓controller跟model不那麼僅僅耦合,要改邏輯時也好改許多
3.@Repository : 主要用在model層註釋,可充當數據庫
4.@Configuration :主要用在配置時的註釋
@Component
public @interface Service {
}
@Component
public @interface Repository {
}
長久使用
<bean class=
"org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
Q:@Autowired?
A:注入時所用的annotation,標記代表需要注入
舉個例子:
@Service
public class FileUpLoadService {...}
@Autowired
private FileUpLoadService fileUpLoadService;
這樣就自動注入了,可以在controller的地方用@Autowired注入就可以拿到fileUpLoadService的function
參考:https://www.baeldung.com/spring-component-repository-service
https://dotblogs.com.tw/una/2018/02/20/141448
https://stackoverflow.com/questions/6827752/whats-the-difference-between-component-repository-service-annotations-in