ããã«ã¡ã¯ãç§ã®ååã¯ãŠã©ãžããŒã«ã§ããããžã¿ã«ããžãã¹ãã©ãããã©ãŒã ã®ããŒã ã§ãSberTechã®ããŒãITãšã³ãžãã¢ãšããŠåããŠããŸãã äžåºŠãæŒé£æã«ãDagger 2ã®é·æãšçæãããã³å®è£
ã§äœã倿Žããããã«ã€ããŠè©±ãåããŸããã ç§ãã¡ã¯ããããããŸãããããã£ãŠãç§ãã¡ãå€ãã®ã³ãŒããæžãã®ã§ããã®æç¹ã§ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã§ã«100500ã®ã¡ãœãããš0.5ãã³ã®dexãã¡ã€ã«ããããŸããã ãã©ããã³ã®é è³ãç§ãã¡ã¯ããå°ãªãæžãããšã¯ã§ããªããšããçµè«ã«éããŸããããã³ã³ãã€ã«äžã«çæãããã³ãŒãã®éãæžããããšãã§ããŸãã ããã§ãæ¢åã®Googleã®ãã¹ããã³ã®ä»£æ¿åãæ¢ãããšã«ããŸããã

éžã³æ¹
éžæãããã®ã®äžè¬çãªèŠä»¶ãããã€ã説æããŸãããããã«ãããäžå¿
èŠãªã³ãŒãçæãé²ãããšãã§ããŸãã
1.ã³ã³ãã€ã«æã§ã¯ãªããå®è¡æã®äŸåé¢ä¿ã®çæãã®ãããžã§ã¯ãã§ã¯ãmultidexãã¯ããã«è¶
ããŠïŒãã§ã«3åïŒãçŸåšãããžã§ã¯ãã«ã¯4ã€ã®dexãã¡ã€ã«ããããŸãã ãããã®åœ¢æã«ãããäž»èŠãªåœ¹å²ã¯ãã³ã³ãã€ã«äžã®ã³ãŒãçæã«ãã£ãŠæããããŸãã
2.䜿ããããç¶æ³ãæ³åããŠãã ããã äŸåæ§æ³šå
¥ã®ã¢ããªã±ãŒã·ã§ã³ã«åºã¥ããŠãã¢ãŒããã¯ãã£ããã°ãããããããå¿
èŠããããŸãã ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠäŸåé¢ä¿ãå®è£
ããããã«æç€ºãããããŒã ããè€æ°ã®ãžã¥ãã¢ãéžæããŸããã æ°æéã®éã圌ãã¯ã¿ã¹ã¯ãæ£åžžã«å®äºãããããžã§ã¯ãã¯éå§ãããã©ã³ã¿ã€ã ã«èœã¡ãŸããã§ããã è¿
éãã€å¹ççã«ã誰ããéåžžã«å¹žãã§ãã
ãã¬ãŒã®çµéšã§ã¯ãæ°æéã§ã¯è¶³ããªããšèšãããŠããŸãã ãããŠæ°æ¥ã§ããã ãŸãã¯æ°ã¶æã 䜿ããããã¯é«éã«ã€ãªãããŸã-ãããŠã2000äžäººã®é¡§å®¢ã«äŸåé¢ä¿ãå®è£
ããããšã«ãªããšãæéã®åé¡ã¯ç¡èŠã§ããŸããã
3. Dagger 2ã®æ©èœä»¥äžã®æ©èœDagger 2ã¯ã倿°ã®è峿·±ãå®è£
æ©èœãã¹ã³ãŒããããã³ãã®ä»ã®äŸåæ§æ³šå
¥æ©èœãæäŸããŸãã å¥ã®ãã¬ãŒã ã¯ãŒã¯ã«åãæ¿ãããšãã«ããã®ãã¹ãŠã倱ããããããŸããã
ãã®çµæãããã€ãã®ãã¬ãŒã ã¯ãŒã¯ã«æ±ºçããŸããã
- ãã§ã¶ãŒ
- ãããã³
- ã³ãã€ã³
- 茞è¡
- ã€ãŸããã
- ã¿ã€ã¬ãŒ
- ã©ã€ãã»ãŒããŒ
æåŸã®4ã€ã®ãªãã·ã§ã³ã¯ã³ãŒãçæã䜿çšãããããããã«ç Žæ£ããŸããã ç³é¹žã®åæéãã倿Žããçç± ãããã£ãŠããã¥ãŒã¯ããã§ã¶ãŒããããã³ãã³ãã€ã³ã«èœã¡ãŸããã ãã ããæåã®2ã€ã¯é·ãéãµããŒããããŠããããKodeinã¯é »ç¹ã«ãªãªãŒã¹ãããŸãã æåŸã«ãç§ãã¡ã¯ããã«ãšã©ãŸãããšã«ããŸããã
DIãŸãã¯SLïŒ
å°ãåæ
çãªäœè«ã RedditãšAndroidã¢ãŒããã¯ãã®éã§ã¯ããã®ãã¬ãŒã ã¯ãŒã¯ãäŸåæ§æ³šå
¥ãã¿ãŒã³ã®å®è£
ãªã®ãããããšããµãŒãã¹ãã±ãŒã¿ãŒã®å®è£
ãªã®ãã«ã€ããŠè°è«ããããŸãã ãµãŒãã¹ãã±ãŒã¿ãŒã®æ¯æè
ã®è°è«ïŒãžã§ã€ã¯ã»ãŠã©ãŒãã³èªèº«ãèšã£ãããã«ã圌ã¯ãããããŸãæ£åœåããŸããã ããããããã§ãããã¬ãŒã ã¯ãŒã¯éçºè
èªèº«ã¯èªåãDIãšããŠäœçœ®ã¥ããŠããŸãã ããŒã å
ã§ã¯ããã®ãããã¯ã«ã€ããŠãè°è«ããŸããããäžè¬çãªæèŠã«ã¯è³ããŸããã§ããã Salomon BrysïŒãã¬ãŒã ã¯ãŒã¯éçºè
ïŒã«é£çµ¡ããŸããã ç§ã¯çããåŒçšããŸãïŒ
ãæ£ç¢ºã«ã¯ãDIãšSLã©ã€ãã©ãªã«ã¯å€ãã®éãããããŸãã
-DIã©ã€ãã©ãªã¯ãäžæçãªäŸåé¢ä¿ãšåæåã®é åºãçè§£ããå¿
èŠããããŸã
-DIã©ã€ãã©ãªã¯ã¹ã³ãŒãïŒã·ã³ã°ã«ãã³ããããã€ããŒãªã©ïŒãæäŸããå¿
èŠããããŸã
Kodeinã¯ç¢ºãã«DIã©ã€ãã©ãªã§ããããã¬ãŒã ã¯ãŒã¯ã®äœæè
ã®ç«å Žã«åºã¥ããŠãKodeinã¯ãDIãã¿ãŒã³ã®èŠä»¶ãããæºããããããµãŒãã¹ãã±ãŒã¿ãŒã§ã¯ãããŸããã å人çã«ã¯ãããã¯çšèªã®åé¡ã§ãããããŒã«ã®æ©èœã§ã¯ãªããšæããŸãã ã©ã€ãã©ãªãããŒãºãæºãããŠããã°ããããå®è£
ãããã¿ãŒã³ã®ååãäœã§ãããã¯é¢ä¿ãããŸããã äž»ãªããšã¯ãäœæ¥ãåé¡ãªãè¡ãããããšã§ãã
å®è£
ãšæ¬ ç¹
ãããžã§ã¯ããã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã«ç§»è¡ãå§ãããšãã«ãKodeinãžã®ç§»è¡ãå¯èœã«ãªããŸãããã€ãŸãããã¹ãŠã®è£œåãäºãã«ç¬ç«ããå¥åã®ã¢ãžã¥ãŒã«ã«è¡šç€ºããŸãã ããã«ããæãèªç±ã«ãªãã1ã€ã®å°ããªDagger 2ã¢ãžã¥ãŒã«ã§Kodeinã眮ãæããããšãã§ããŸããã ã©ã¡ãããšããã°ãã¢ãžã¥ãŒã«ã®ä»¥åã®å®å®ããŒãžã§ã³ã«ããŒã«ããã¯ããŠäœæ¥ããããšãã§ããŸãã
æåã¯ãKotlinã§èšè¿°ããããã®ãããªãã¯ãã䜿çšããŠãããããKodeinãJavaãããžã§ã¯ãã§æ£ããåäœããªãããšãå°ãæããŠããŸããã ããããKodeinã¯åªããJavaã³ãŒãããµããŒãããŠãããããã«äŸåé¢ä¿ã泚å
¥ããã®ã¯ãDagger 2ã䜿çšããã®ãšåããããç°¡åã§ããããšãããããŸããïŒããã«ç°¡åã§ã-以äžã§è©³ãã説æããŸãïŒã
Dagger 2ããKodeinãžã®ç§»è¡ã¯ãã¢ãžã¥ãŒã«ã®ãµã€ãºãéåžžã«å°ãããDIãããŸãç©æ¥µçã«äœ¿çšãããªãã£ããããèŠçã¯ãããŸããã§ããã ããã»ã¹ã¯ååã«ã¹ã ãŒãºã«é²ã¿ããã¹ãŠã¯ããŒãããã¯ããå§ãŸããäŸåé¢ä¿ã¯æå³ãããšããã«å®è£
ãããããã«ãªããŸããã ãã¡ãããKaggerã§æžããããããžã§ã¯ãã«Kodeinãå®è£
ããæ¹ãè¯ãã®ã§ãããå®éšããŠããã®ã§ãäºæ³å€ã®åŽé¢ããã©ã€ãã©ãªãèŠãå¿
èŠããããŸããã
ããã¯ãã¹ãŠãGoogleã®èŠæš©ãçµããããDaggerããæé«ã®DIãã¬ãŒã ã¯ãŒã¯ã®ã¿ã€ãã«ãç²åŸããå®ç§ãªéã®åŒŸäžžã®ããã«èŠããŸãã ããããKodeinã¯éçšäžã«éåžžã«éå€§ãªæ¬ ç¹ãçºèŠããŸããã
- æãéèŠã§å€§ããªãã€ãã¹ç¹ã¯ããšã©ãŒã®åå ãçè§£ããã«ã©ã³ã¿ã€ã ã§ãšã©ãŒãååŸã§ããããšã§ãã ããã¯ãDagger 2ãé€å»ããæåã®Daggerã®åé¡ã§ãããã³ã³ãã€ã«äžã«ã³ãŒãçæã«åãæ¿ããŸããã ã³ãã€ã³ã§ãåãããšãããããŸãã ãã®åé¡ã¯ã培åºçãªãã¹ããšèªåãã¹ãã§ã®æ©èœã«ãã¬ããžã«ãã£ãŠè§£æ±ºãããŸãã ããã«ããã¬ãŒã ã¯ãŒã¯èªäœã¯ããã¹ãã®äœææã«ãã®æ©èœã䜿çšããããšãæšå¥šããŠããŸãã
- å€ãå€§èŠæš¡ãªJavaãããžã§ã¯ãããããKotlinãæ¥ç¶ããæ¹æ³ããªãå ŽåãKodeinã¯é©åã§ã¯ãããŸããã ããããããã¯é·å¹Žã®éºç£ã®äžã§ç§ãã¡ã®å·šå€§ãªãããžã§ã¯ãã®ç
æ°ã§ãã
- å®éã®ãããžã§ã¯ãã§ã¯äººæ°ãäœãã ããã¯ãéçºè
ã®ãã£ãŒãããã¯ãå°ãªããªããžããªãžã®è²¢ç®è
ãå°ãªãããããããžã§ã¯ãã®éçºãåãDaggerãããã¯ããã«é
ããšããäºå®ã«ã€ãªãããŸãã ç§ãã¡ãçºèŠããæ¬ ç¹ã«ä»ãèŠããã§ããã®ã§ãã³ãã€ã³ãçç£ã«æã¡èŸŒãããšã¯äºå®ã§ã¯ãããŸããã
æ¥ç¶æ¹æ³
ãã¬ãŒã ã¯ãŒã¯ããããžã§ã¯ãã«æ¥ç¶ããã®ã«ããã»ã©æéã¯ããããŸãããgradleãã¡ã€ã«ã§äŸåé¢ä¿ãæå®ããã ãã§ãïŒ
implementation 'com.github.salomonbrys.kodein:kodein:4.1.0'
Kotlinã§ã®ãªã³ã¯ïŒ
äŸåé¢ä¿ã宣èšãããKodeinãªããžã§ã¯ãã宣èšããŸãã
val kodein = Kodein { bind<Message>() with provider { MessageFactory(0, 5) } bind<DbProvider>() with singleton { SqliteDS.open("path/to/file") } }
ããã«ã€ããŠããã«èª¬æããŸããbindã¡ãœããã¯ãããã§ã¯ã¯ã©ã¹ãã€ã³ã©ã€ã³é¢æ°ã䜿çšããŠãã€ã³ããããããšã瀺ããŠããŸãã ãžã§ããªãã¯ã§ã¯ãå®è£
ãæ³šå
¥ããã€ã³ã¿ãŒãã§ã€ã¹ã瀺ããŸãã ãã€ã³ãã£ã³ã°ã®æ¹æ³ã説æããwithã¡ãœãããæ¥ãåŸãKodeinã«ã¯ãããã®ããã€ãããããŸããããããã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãããã®å Žåã¯ãããã€ããŒãšã·ã³ã°ã«ãã³ã§ãã ãã®åŸãäžæ¬åŒ§ã§ã泚å
¥ããã¯ã©ã¹ã®ç®çã®ã€ã³ã¹ã¿ã³ã¹ã眮ãæããŸãã
ãã€ã³ãã£ã³ã°èªäœã¯æ¬¡ã®ããã«ãªããŸãã
class Controller(private val kodein: Kodein) { private val ds: DataSource = kodein.instance() }
ååãšããŠãè€éãªããšã¯äœããããŸããã詳现ãç¥ããªããŠãããã®ãã¬ãŒã ã¯ãŒã¯ã§ããã«äœæ¥ãéå§ã§ããŸãã
ãã€ã³ãã£ã³ã°ã®çš®é¡
Kodeinã§ã¯ãããã€ãã®æ¹æ³ã§äŸåé¢ä¿ã泚å
¥ã§ããŸãã
- ãã¡ã¯ããªãã€ã³ãã£ã³ã°ã¯ããã¡ã¯ããªããå¿
èŠãªã¿ã€ãã®ã€ã³ã¹ã¿ã³ã¹ãååŸããããã«åŒæ°ãå¿
èŠãšãããã€ã³ãã£ã³ã°ã§ãã ã€ã³ã¹ã¿ã³ã¹ã¯ãç®çã®ã¿ã€ãã®ã€ã³ã¹ã¿ã³ã¹ãèŠæ±ããããã³ã«çæãããŸãã
val kodein = Kodein { bind<Message>() with factory { type: Int -> MessageFactory(type) } }
- ãããã€ããŒãã€ã³ãã£ã³ã°-ãã®ãã€ã³ãã£ã³ã°ã¯ãã¹ãã¬ãŒãžããå¿
èŠãªã¿ã€ãã®ã€ã³ã¹ã¿ã³ã¹ãè¿ããŸãããã¡ã¯ããªãã€ã³ãã£ã³ã°ãšã¯ç°ãªããæ³šå
¥ã®åŒæ°ã¯å¿
èŠãããŸããã ãªã¯ãšã¹ãã«å¿ããŠæ¯åçæãè¡ãããŸãã
val kodein = Kodein { bind<Message> with provider { MessageFactory(6) } }
- ã·ã³ã°ã«ãã³ãã€ã³ãã£ã³ã°-ããã§ã¯ãã¹ãŠãç°¡åã§ããé
å»¶åæåã䜿çšããŠã·ã³ã°ã«ãã³ãäœæããŸãã ã·ã³ã°ã«ãã³ã®äœæã¯äžåºŠã ãåŒã³åºãããŸãã
val kodein = Kodein { bind<DBProvider>() with singleton { SqliteDS.open("path/to/file") } }
- ã¿ã°ä»ããã€ã³ãã£ã³ã°-ç°ãªãã€ã³ã¹ã¿ã³ã¹ãçæãããã¿ã€ãã®ã¿ã°ä»ããèš±å¯ããŸãã
val kodein = Kodein { bind<Message>() with factory { type: Int -> MessageFactory(type) } bind<Message>("ImageMessage") with provider { MessageFactory(10) } bind<Message>("PaymentMessage") with singleton { MessageFactory(20) } }
æ©èœããããŸãïŒ
- é
å»¶åæåãªãã§ã·ã³ã°ã«ãã³ãäœæããŸãã Kodeinãªããžã§ã¯ããåæåããããšããªããžã§ã¯ããçæãããŸãã
- ã€ã³ã¹ã¿ã³ã¹ãåä¿¡ããŸãïŒäœæãããå Žåã®ã¿ïŒã
- ã·ã³ã°ã«ãã³ãšãã¡ã¯ããªãã€ã³ãã£ã³ã°ã®æ··åããŒãžã§ã³ã®äœæ-åŒæ°ãæã€ã€ã³ã¹ã¿ã³ã¹ãååŸããæ¯åæ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããããªãå Žåã
ãã1ã€ã®äŸ¿å©ãªæ©èœã¯ããã³ãã«ã匱ããªã³ã¯ãšãœãããªã³ã¯ã§ã©ããããããšã§ãã ããã¯ããªããžã§ã¯ããé·åœã§ãã£ãŠã¯ãªããªãããšãçè§£ããŠããå Žåã«æå©ã§ãã
è峿·±ãæ©äŒã¯ãããŒã«ã«ã¹ããªãŒã ããã€ã³ãããããšã§ãã ã€ãŸããåã¹ã¬ããã«ã¯ãå¿
èŠãªã€ã³ãžã§ã¯ã·ã§ã³ã®ç¬èªã®ã€ã³ã¹ã¿ã³ã¹ããããŸãã
ã¢ãžã¥ãŒã«ã®äœæ
Kodeinã§ã¯ãDagger 2ãšã»ãŒåãæ¹æ³ã§ãã€ã³ãã£ã³ã°ãã¢ãžã¥ãŒã«ã«ä¿åã§ããŸããäŸïŒ
val apiModule = Kodein.Module { bind<MessengerApi>() with singleton { DefaultMessengerApi() } }
ãããŠãKodeinãªããžã§ã¯ããåæåãããšãã«ãç®çã®ã¢ãžã¥ãŒã«ãæå®ã§ããŸãã
val kodein = Kodein { import(apiModule) }
ãã€ã³ãã®ãªãŒããŒã©ã€ã
ããã©ã«ãã§ã¯ãå¶ç¶ã®ãäºéããã€ã³ãã£ã³ã°ãäºæãã¬çµæã«ã€ãªãããåé¡ãèŠã€ããã®ã«æéãæµªè²»ããå¯èœæ§ããããããKodeinã¯ãã€ã³ãã£ã³ã°ã®ãªãŒããŒã©ã€ããçŠæ¢ããŠããŸãã ãããããã®ãããªæ©äŒã¯ååšããŸãã ããã¯ãããšãã°ãå®è£
ãããçš®ã®ã¢ãã¯ã«å€æŽã§ããã¯ã©ã¹ããã¹ãããå Žåã«äŸ¿å©ã§ãã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
val kodein = Kodein { bind<MessengerApi>() with singleton { DefaultMessengerApi() } bind<MessengerApi>(overrides = true) with singleton { CustomMessengerApi() } }
泚å
¥ãããåã®ã€ã³ã¹ã¿ã³ã¹ãæ¢ã«ãããã©ããããããªãããšãæ³åããŠãã ããã ãã®ãããªå Žåã«ã¯ããã®ãããªã€ã³ã¹ã¿ã³ã¹ãååšããå Žåã«ããããªãŒããŒããŒãã§ããèšèšããããŸãã
val kodein = Kodein { import(testEnvModule, allowOverride = true) }
æ¢ã«ãªãŒããŒã©ã€ããããã€ã³ã¹ã¿ã³ã¹ãååŸããããšãæãŸããããšã瀺ããã©ã°ããããŸãã ãæ°ãããã€ã³ã¹ã¿ã³ã¹ã«ãæ¹åããããæ©èœãããå ŽåïŒ
val testModule = Kodein.Module(allowSilentOverride = true) { bind<EmailClient>() with singleton { MockEmailClient() } }
é
å»¶åæå
Kotlinããã®ããããã£ã®å§ä»»ã®ãããã§ãKodeinã§ã¯ãã»ãŒãã¹ãŠã®ã¿ã€ãã®ãã€ã³ãã£ã³ã°ã«å¯ŸããŠããã€ã³ãã£ã³ã°ã®é
å»¶åæåã䜿çšã§ããŸãã
class Controller(private val kodein: Kodein) { private val messageFactory: (Int) -> Dice by kodein.lazy.factory() private val dbProvider: DataSource by kodein.lazy.instance() private val randomProvider: () -> Random by kodein.lazy.provider() private val answerConstant: String by kodein.lazy.instance("answer") }
ã©ã³ã¿ã€ã ã§ã®ã¯ã©ã¹ã®çææ¹æ³
ã¯ã©ã¹ã¯é¢æ°ãåã蟌ãããšã§çæãããŸãã ããã«ãããã³ã³ãã€ã«æã«ã³ãŒãã«ã€ã³ãžã§ã¯ã·ã§ã³ãåã蟌ãããšãã§ããŸãã ã€ãŸããã³ã³ãã€ã©ã¯ãçµã¿èŸŒã¿é¢æ°ã宣èšãããå Žæã«å¿
èŠãªã³ãŒãã®äžéšãæ¿å
¥ããã ãã§ãã ã³ãã€ã³ã§ã®ã¯ã©ã¹çæã¯åãåçã§è¡ãããŸãã ã€ã³ã¹ã¿ã³ã¹ã®äœæã«å¿
èŠãªã¿ã€ãã®éžæã¯ãå
·äœåããããžã§ããªãã¯ã«ãããã®ã§ãã 詳现ã«ã€ããŠã¯ãèšäºã®æåŸã«ãããªã³ã¯ãã芧ãã ããã
Javaãããžã§ã¯ãã®Kodein
ãããããããžã§ã¯ããKotlinã§ã¯ãªãJavaã§æžãããŠããå Žåã¯ã©ãã§ããããïŒ Kodeinã¯ãå€ãè¯ãJavaã§ãåãæ©èœãæäŸããŸãããããã€ãã®å¶éããããŸãã ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãJSR-330仿§ãç¹ã«Javaã§DIã«å°ãªããšãäžåºŠééããããšããã人ãªã誰ã§ãç¥ã£ãŠãã
Injectã¢ãããŒã·ã§ã³ãéšåçã«ãµããŒãããŸãã
ããã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã ã€ã³ãžã§ã¯ã·ã§ã³ã¯ãã€ã³ã©ã€ã³é¢æ°ãšãžã§ããªãã¯ã§ã¯ãªãããªãã¬ã¯ã·ã§ã³ã®å©ããåããŠè¡ãããŸãã ãããã£ãŠããªãã¬ã¯ã·ã§ã³ãšå€èšèªã³ã³ãã€ã«ã«ããããã©ãŒãã³ã¹ãäœäžããŸãã ããã«ããã€ã³ããŒãå«ããªããžã§ã¯ãã¯Kotlinã§äœæããå¿
èŠããããŸããæ¡ä»¶ãJavaã®ã¿ã®äœ¿çšã瀺ããŠããå Žåãæ²ããããªãKodeinã¯ããªãã«ã¯é©ããŠããŸããã
Javaãããžã§ã¯ãã§Kodeinã䜿çšããã«ã¯ãããã€ãã®æé ãå®è¡ããå¿
èŠããããŸãã
- JxInjectorãgradleã«æ¥ç¶ããŸãã
compile 'com.github.salomonbrys.kodein:kodein-jxinject:4.1.0'
2. jxIntectorã¢ãžã¥ãŒã«ãKodeinãªããžã§ã¯ãã«è¿œå ããŸãã
val kodein = Kodein { import(jxInjectorModule)
3.ãã€ã³ãããŸãã ããã«ã¯2ã€ã®æ¹æ³ããããŸãã æåã®æ¹æ³ã¯å€å
žçãªæ¹æ³ã§ãã å¿
èŠãªãã£ãŒã«ãã«æ³šéã®æ¿å
¥ãèšè¿°ããã¡ãœãããèšè¿°ããã ãã§ãããã¹ãŠãDaggerã®å Žåãšåãããã«æ©èœããŸãã
public class MyJavaController { @Inject public MyJavaController(Connection connection, FileSystem fs) { } }
2çªç®ã®æ¹æ³ã¯ãç¹å®ã®Kodeinãªããžã§ã¯ãã䜿çšããããšã§ãã
MyJavaController controller = Jx.of(kodein).newInstance(MyJavaController.class);
ãŸãã¯ïŒ
MyJavaController controller = new MyJavaController(); Jx.of(kodein).inject(controller);
ãããã«
倿¹ã«æåéãåºæ¬ãçè§£ããããããããžã§ã¯ãã«å®è£
ããããã«Kotlinã§èšè¿°ããŠå®çšŒåã§ãã¹ãããããšãå¯èœã«ãããã·ã³ãã«ã§è»œéãªDIãã¬ãŒã ã¯ãŒã¯ã§ããïŒ è¯ãããã«èãããŸãããã³ãã€ã³ã§ã¯ãããçå®ã«ãªããŸããã
ãã®ãã¬ãŒã ã¯ãŒã¯ã¯Dagger 2ã®100ïŒ
ã®ä»£æ¿ç©ã§ã¯ãããŸããããããããŒæ°ã§ãã察åŠã§ããã远å ã®ã³ãŒãçæã«ããæ°ããdexãã¡ã€ã«ãçæãããå¯èœæ§ã®ããã³ãŒãã®å€§èãªãããžã§ã¯ãã§äœ¿çšã§ããŸãã ããããå°ããªãããžã§ã¯ãã§ã¯ã³ãã€ã³ãæªããšã¯æããªãã§ãã ããã Dagger 2ã«åºæã®ã¡ã«ããºã ã«é¢ããç¥èãå¿
èŠãšããã«ãäŸåé¢ä¿ã®æ³šå
¥ã倧å¹
ã«ç°¡çŽ åããŸãã
Kodeinã¯ãŸããKotlinã«éåžžã«é©ããŠããŠããã®ãããªãããžã§ã¯ãã§ã¯ããªãè¯ãæ°åã§ãã ããã§ãå°ãªããšããã¯ã©ã¹ã®ã³ãŒãçæã¯éåžžã«è峿·±ãã§ããããã¯ãã³ãã£ã«ã³ãæäŸãããããã®æ©äŒãæ¯æããåå°ã䌎ãã¢ãããŒãããã®éžè±ã§ãã æ®å¿µãªããããã®å®éšã®äžéšãšããŠæžããããã¹ãŠã®ã³ãŒãããŸã çç£ããŠããŸããããã¬ãŒã ã¯ãŒã¯ãç§ãã¡ã®è¶³å
ãæããªããšãã100ïŒ
ã®ç¢ºå®æ§ããªãããã§ãã ç ç©¶ã¯é²è¡äžã§ãã
䟿å©ãªãªã³ã¯