iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
1
Mobile Development

Android 開發經驗三十天系列 第 14

[Android 開發經驗三十天]D14一Spring Boot IOC

  • 分享至 

  • twitterImage
  •  

空虛寂寞冷? 別擔心,你還有鐵人賽。/images/emoticon/emoticon02.gif
今天挑戰第 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


上一篇
[Android 開發經驗三十天]D13一Dagger(下)
下一篇
[Android 開發經驗三十天]D15一自定義小畫家(上) 基本介紹
系列文
Android 開發經驗三十天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言