{"id":1313,"date":"2019-06-02T11:53:44","date_gmt":"2019-06-02T02:53:44","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=1313"},"modified":"2021-05-11T12:31:03","modified_gmt":"2021-05-11T03:31:03","slug":"dagger2%eb%a5%bc-%ec%95%8c%ec%95%84%eb%b3%b4%ec%9e%90-binding","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=1313","title":{"rendered":"Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding"},"content":{"rendered":"<p><a href=\"https:\/\/www.charlezz.com\/?p=1259\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; \uae30\ubcf8\ud3b8<\/a><br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1289\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Scope<\/a>\u00a0<br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1297\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Injection\uc758 \uc885\ub958<\/a><br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1299\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Qualifier<\/a>\u00a0<br \/>\nDagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding\u00a0(You&#8217;re here)<br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1315\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Multibinding<\/a><br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1336\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; SubComponent<\/a><br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1357\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Android<\/a><br \/>\nDagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Testing(\uc900\ube44\uc911)<br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=45066\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Dynamic Feature\uc5d0 \uc801\uc6a9\ud558\uae30<\/a><\/p>\n<hr \/>\n<h2>@Binds<\/h2>\n<p>Module\ub0b4\uc5d0\uc11c abstract \uba54\uc18c\ub4dc \uc55e\uc5d0 \ubd99\uc5ec \ubc14\uc778\ub529\uc744 \uc704\uc784\ud558\ub294 \uc560\ub178\ud14c\uc774\uc158\uc785\ub2c8\ub2e4.\u00a0 \uc608\ub97c\ub4e4\uc5b4 Random\uc774\ub780 \uac1d\uccb4\ub97c SecureRandom\uc774\ub780 \uac1d\uccb4\uc5d0 \ubc14\uc778\ub529 \ud558\uae30 \uc704\ud574\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc120\uc5b8 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">@Binds abstract Random bindRandom(SecureRandom secureRandom);<\/pre>\n<p>@Binds \uba54\uc18c\ub4dc\ub294 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\ub294 \ub300\uc2e0 \ucef4\ud3ec\ub10c\ud2b8\ub0b4\uc5d0 \uc788\ub294 \uac1d\uccb4\ub97c \ud30c\ub77c\ubbf8\ud130\ub85c \ubc1b\uc544 \ubc14\uc778\ub529\ud568\uc73c\ub85c\uc368 \uc880 \ub354 \ud6a8\uc728\uc801\uc73c\ub85c \ub3d9\uc791\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<h2>@BindsOptionalOf<\/h2>\n<p>Optional \ucee8\ud14c\uc774\ub108\uc5d0 \ub4e4\uc5b4\uac08 value\uc5d0 \ub300\ud55c\u00a0 \ubc14\uc778\ub529\uc744 \uc120\uc5b8\ud558\ub294 \uc560\ub178\ud14c\uc774\uc158\uc785\ub2c8\ub2e4.\u00a0<br \/>\n\ub9cc\uc57d Module\ub0b4\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uba54\uc18c\ub4dc\uac00 \uc120\uc5b8\ub418\uc5b4\uc788\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">@BindsOptionalOf abstract Foo optionalFoo();<\/pre>\n<p>\ucef4\ud3ec\ub10c\ud2b8 \ub0b4\uc5d0 \uc788\ub294 \uc5b4\ub5a0\ud55c \uac1d\uccb4\ub4e0 \uc774 Foo\uc640 \ubc14\uc778\ub529 \ub420 \ub9cc\ud55c \uac1d\uccb4\uac00 \uc788\ub2e4\uba74 \ubc14\uc778\ub529\ub418\uac8c \ub429\ub2c8\ub2e4. \ub9cc\uc57d \ubc14\uc778\ub529\uc774 \ub41c\ub2e4\uba74 Optional&lt;Foo&gt;\uc5d0 \uc758\uc874\uc131 \uc8fc\uc785\uc2dc \ucee8\ud14c\uc774\ub108\uc758 \uc0c1\ud0dc\uac00 Present(\uac1d\uccb4\uc788\uc74c) \uc0c1\ud0dc\uac00 \ub418\uace0, \uadf8\ub807\uc9c0 \uc54a\ub2e4\uba74 Absent(\ube44\uc5b4\uc788\uc74c) \uc0c1\ud0dc\uac00 \ub429\ub2c8\ub2e4.<\/p>\n<p>@BindsOptionalOf \uba54\uc18c\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc870\uac74\uc744 \ucda9\uc871\ud574\uc57c \uc0ac\uc6a9\uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ubc18\ub4dc\uc2dc abstract\uc5ec\uc57c \ud568.<\/li>\n<li>qualifier \uc560\ub178\ud14c\uc774\uc158\uc744 \uac00\uc9c8\uc218 \uc788\uc74c<\/li>\n<li>void\ub97c \ubc18\ud658\ud560 \uc218 \uc5c6\uc74c<\/li>\n<li>\ud30c\ub77c\ubbf8\ud130\ub97c \uac00\uc9c8 \uc218 \uc5c6\uc74c<\/li>\n<li>\uc608\uc678\ucc98\ub9ac \ubd88\uac00<\/li>\n<li>@Inject\uac00 \ubd99\uc740 \uc0dd\uc131\uc790\uc5d0 qualifier\uac00 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc740 \ud0c0\uc785\uc744 \ubc18\ud658\ud560 \uc218 \uc5c6\uc74c<\/li>\n<\/ul>\n<p>\uad6c\uccb4\uc801\uc73c\ub85c \uc544\ub798\uc758 \uacbd\uc6b0\ub4e4\uc5d0 \ub300\ud574 \uc778\uc81d\uc158\uc774 \uac00\ub2a5\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">Optional&lt;Foo&gt;\r\nOptional&lt;Provider&lt;Foo&gt;&gt;\r\nOptional&lt;Lazy&lt;Foo&gt;&gt;\r\nOptional&lt;Provider&lt;Lazy&lt;Foo&gt;&gt;&gt;<\/pre>\n<p>\ub9cc\uc57d Foo\uc640 \ubc14\uc778\ub529\ub418\ub294\uac83\uc5d0 @Nullable\uc560\ub178\ud14c\uc774\uc158\uc774 \uc788\ub2e4\uba74, \ucef4\ud30c\uc77c\uc2dc\uac04\uc5d0 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uac8c \ub429\ub2c8\ub2e4. \uc65c\ub0d0\ud558\uba74 Optional \ucee8\ud14c\uc774\ub108\ub294 null\uc744 \ud3ec\ud568\ud560 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108\uc5d0 Provider\ub098 Lazy\uc758 \ub2e4\ub978 \ud615\ud0dc\ub85c \uc8fc\uc785\ud558\uc5ec null\uc774 \ub4e4\uc5b4\uac00\ub294 \uac83\uc744 \ubc29\uc9c0\ud558\uace0, \ud544\uc694\uc2dc get()\uba54\uc18c\ub4dc\ub97c \ud1b5\ud574 \uac1d\uccb4 \ub610\ub294 null\uc744 \uc5bb\uc744\uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>@BindsInstance<\/h2>\n<p>\ucef4\ud3ec\ub10c\ud2b8 \ube4c\ub354\ub0b4\uc758 \uba54\uc18c\ub4dc\uc5d0 \ucd94\uac00\ud558\uac70\ub098 \ucef4\ud3ec\ub10c\ud2b8 \ud329\ud1a0\ub9ac\ub0b4\uc758 \ud30c\ub77c\ubbf8\ud130\ub85c \ucd94\uac00\ud558\uc5ec \uac1d\uccb4\ub97c \ucef4\ud3ec\ub10c\ud2b8\uac00 \uac00\uc9c0\uace0 \uc788\ub294 \ud2b9\uc815 \ud0a4\uc5d0 \ubc14\uc778\ub529 \ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \">@Component.Builder\r\ninterface Builder {\r\n    @BindsInstance Builder foo(Foo foo);\r\n    @BindsInstance Builder bar( @Blue Bar bar);\r\n    ...\r\n}\r\n\r\n\/\/ or\r\n\r\n@Component.Factory\r\ninterface Factory {\r\n    MyComponent newMyComponent(\r\n        @BindsInstance Foo foo,\r\n        @BindsInstance @Blue Bar bar);\r\n}<\/pre>\n<p>\ube4c\ub354\ub098 \ud329\ud1a0\ub9ac\uc5d0\uac8c Foo\uc640 Bar \uc778\uc2a4\ud134\uc2a4\ub97c \ub118\uaca8\uc90c\uc73c\ub85c\uc368 \ucef4\ud3ec\ub10c\ud2b8\uac00 \uc774 \uc778\uc2a4\ud134\uc2a4\ub4e4\uc744 \uad00\ub9ac\ud558\uac8c \ub418\uace0 \uc694\uccad\uc2dc \uc774 \uc778\uc2a4\ud134\uc2a4\ub4e4\uc744 \ub118\uaca8\uc8fc\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>@BindsInstance\uc758 \uc778\uc790\ub294 @Nullable \uc560\ub178\ud14c\uc774\uc158\uc774 \ubd99\uc9c0 \uc54a\ub294 \uc774\uc0c1 null\uc774 \ub420\uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ube4c\ub354\uc5d0\uc11c @BindsInstance \uba54\uc18c\ub4dc\ub294 \ubc18\ub4dc\uc2dc \ucef4\ud3ec\ub10c\ud2b8\uac00 \uc0dd\uc131\ub418\uae30 \uc804\uc5d0 \ud638\ucd9c\uc774 \ub418\uc5b4\uc57c\ud558\uace0, \uadf8\ub807\uc9c0 \uc54a\ub2e4\uba74 @Nullable\uc744 \ubd99\uc5ec\uc57c \ud569\ub2c8\ub2e4. \uc774 \uacbd\uc6b0 \ucef4\ud3ec\ub10c\ud2b8\ub294 null \uc778\uc790\ub97c \ud638\ucd9c\ud55c\uac83 \ucc98\ub7fc \ub3d9\uc791\ud558\uac8c \ub429\ub2c8\ub2e4. \ub2f9\uc5f0\ud788 \uc6d0\uc2dc\ud0c0\uc785\uc740 null\uc774 \ub420\uc218 \uc5c6\uc73c\ubbc0\ub85c @Nullable\uc744 \ubd99\uc774\uba74 \uc548\ub429\ub2c8\ub2e4.<\/p>\n<p>@BindsInstance\ub97c \ud1b5\ud574 \ubc14\uc778\ub529\ub41c \uc778\uc2a4\ud134\uc2a4\ub294 Module\ub0b4\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 \uc778\uc2a4\ud134\uc2a4\uc640 \ub3d9\uc77c\ud558\uac8c \ub3d9\uc791\ub429\ub2c8\ub2e4.\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; \uae30\ubcf8\ud3b8 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Scope\u00a0 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Injection\uc758 \uc885\ub958 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Qualifier\u00a0 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding\u00a0(You&#8217;re here) Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Multibinding Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; SubComponent Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Android Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Testing(\uc900\ube44\uc911) Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Dynamic Feature\uc5d0 \uc801\uc6a9\ud558\uae30 @Binds Module\ub0b4\uc5d0\uc11c abstract \uba54\uc18c\ub4dc \uc55e\uc5d0 \ubd99\uc5ec [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[28,25],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1313"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1313"}],"version-history":[{"count":5,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1313\/revisions"}],"predecessor-version":[{"id":45074,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1313\/revisions\/45074"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}