{"id":1297,"date":"2019-05-28T00:37:15","date_gmt":"2019-05-27T15:37:15","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=1297"},"modified":"2021-05-11T12:30:31","modified_gmt":"2021-05-11T03:30:31","slug":"dagger2%eb%a5%bc-%ec%95%8c%ec%95%84%eb%b3%b4%ec%9e%90-injection%ec%9d%98-%ec%a2%85%eb%a5%98","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=1297","title":{"rendered":"Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Injection\uc758 \uc885\ub958"},"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 \/>\nDagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Injection\uc758 \uc885\ub958\u00a0(You&#8217;re here)<br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1299\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Qualifier<\/a>\u00a0<br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1313\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding<\/a>\u00a0<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>\uc778\uc81d\uc158\uc758 \uc885\ub958(Direct vs Lazy vs Provider)<\/h2>\n<pre class=\"lang:java decode:true \">@Module\r\npublic class CounterModule {\r\n \r\n    int next = 100;\r\n\r\n    @Provides Integer provideInteger() {\r\n        System.out.println(\"computing...\");\r\n        return next++;\r\n    }\r\n}<\/pre>\n<p>\uc778\uc81d\uc158\uc758 \uc885\ub958\uc5d0 \ub300\ud55c \ucc28\uc774\uc810\uc740 \uc704\uc758 \ubaa8\ub4c8\uc744 \ud1b5\ud574 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>Direct injection<\/h3>\n<pre class=\"lang:java decode:true  \">public class DirectCounter {\r\n\r\n    @Inject Integer value;\r\n\r\n    public void print() {\r\n        System.out.println(\"printing...\");\r\n        System.out.println(value);\r\n        System.out.println(value);\r\n        System.out.println(value);\r\n    }\r\n}<\/pre>\n<p>\uc77c\ubc18\uc801\uc778 \uc778\uc81d\uc158\uc778 \uacbd\uc6b0\uc785\ub2c8\ub2e4. \ud55c\ubc88 \uc8fc\uc785\ubc1b\uc740 \uac1d\uccb4\ub294 \uc5ec\ub7ec\ubc88 \ucc38\uc870\ud574\ub3c4 \ucc98\uc74c \uc8fc\uc785\ubc1b\uc740 \uac19\uc740 \uac1d\uccb4\uc785\ub2c8\ub2e4.<\/p>\n<p><strong>\uacb0\uacfc:<br \/>\n<\/strong>computing&#8230;<br \/>\nprinting&#8230;<br \/>\n100<br \/>\n100<br \/>\n100<\/p>\n<h3 id=\"lazy-injections\">Lazy injection<\/h3>\n<p>\uac1d\uccb4\uac00 \ucd08\uae30\ud654\ud558\ub294\ub370 \uc2dc\uac04\uc774 \ud544\uc694\ud558\ub2e4\uba74 Lazy \uc778\uc81d\uc158\uc744 \uace0\ub824\ud574\ubcfc\uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0\ubc14\uc778\ub529 \ub420 \ud0c0\uc785\uc744 \uc704\ud574 Lazy&lt;\ud0c0\uc785&gt;\uc744 \ub9cc\ub4e4\uc5b4 \uc8fc\uae30\ub9cc \ud558\uba74\ub429\ub2c8\ub2e4. Lazy&lt;\ud0c0\uc785&gt; \uac1d\uccb4\uc758 <strong>get()<\/strong> \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c \ud574\uc8fc\uae30 \uc804\uae4c\uc9c0\ub294 \uac1d\uccb4\uac00 \ucd08\uae30\ud654 \ub418\ub294\uac83\uc744 \ub2a6\ucd9c \uc218 \uc788\uc2b5\ub2c8\ub2e4. Lazy \ud0c0\uc785\uc758 \uac1d\uccb4\ub3c4 \uac19\uc740 \uadf8\ub798\ud504 \ub0b4\uc5d0\uc11c \uc2f1\uae00\ud1a4\uc73c\ub85c \uad00\ub9ac \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true   \">public class LazyCounter {\r\n\r\n    @Inject Lazy&lt;Integer&gt; lazy;\r\n\r\n    public void print() {\r\n        System.out.println(\"printing...\");\r\n        System.out.println(lazy.get());\r\n        System.out.println(lazy.get());\r\n        System.out.println(lazy.get());\r\n    }\r\n}<\/pre>\n<p>get()\uba54\uc18c\ub4dc\ub97c \ud1b5\ud574 \uc5bb\uc740 \uac1d\uccb4 \ub610\ud55c \ucd08\uae30\ud654\ub9cc \ub2a6\ucd9c\ubfd0 \ub9e4\ubc88 \ud638\ucd9c\ud574\ub3c4 \uac19\uc740 \uac1d\uccb4\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\uacb0\uacfc:<br \/>\n<\/strong>printing&#8230;<br \/>\ncomputing&#8230;<br \/>\n100<br \/>\n100<br \/>\n100<\/p>\n<h3>Provider injection<\/h3>\n<p><span>@Inject\ub41c Provider\uc5d0\ub300\ud574 get()\uc774 \ud638\ucd9c\ub420\ub54c\ub9c8\ub2e4 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4\uac00 \ub9cc\ub4e4\uc5b4 \uc9d1\ub2c8\ub2e4. \ud558\ub098\uc758 Provider \uac1d\uccb4\ub85c \uc5ec\ub7ec \uc778\uc2a4\ud134\uc2a4\uac00 \ubc18\ud658\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba87\uac1c\uc758 \uc635\uc158 (\ud329\ud1a0\ub9ac, \ube4c\ub354 \ub4f1)\uc744 \uac00\uc9c0\uace0\uc788\ub294 \ub3d9\uc548, T \ub300\uc2e0\uc5d0 Provider &lt;T&gt;\ub97c \uc8fc\uc785\ud558\ub294 \uc635\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4. @Inject\uc0dd\uc131\uc790\uc5d0 \ub300\ud574\uc11c\ub294 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4\ub97c \ub9cc\ub4e4\uc9c0\ub9cc, @Provides\uba54\uc18c\ub4dc\uc5d0 \ub300\ud574\uc11c\ub294 \ubcf4\uc7a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p>\ub300\uac1c\uc758 \uacbd\uc6b0 Provider\ub97c \uc0ac\uc6a9\ud558\ub294\uac83\uc740 \uadf8\ub798\ud504\ub0b4\uc5d0\uc11c \uc798\ubabb\ub41c Scope\ub098 \uc124\uacc4\ud328\ud134\uc744 \ub9cc\ub4e4\uc5b4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub798\ub3c4 \ub4dc\ubb3c\uac8c \ud544\uc694\ud55c \uacbd\uc6b0\uac00 \uc788\uc73c\ub2c8 \uc54c\uc544\ub450\uc2dc\uba74 \uc88b\uc2b5\ub2c8\ub2e4.\u00a0<\/p>\n<pre class=\"lang:java decode:true \">public class ProviderCounter {\r\n\r\n    @Inject Provider&lt;Integer&gt; provider;\r\n\r\n    public void print() {\r\n        System.out.println(\"printing...\");\r\n        System.out.println(provider.get());\r\n        System.out.println(provider.get());\r\n        System.out.println(provider.get());\r\n    }\r\n}<\/pre>\n<p>Provider\ub85c\ubd80\ud130 get()\uc744 \ud638\ucd9c\ud558\uba74 \ub9e4\ubc88 \uc0c8\ub85c\uc6b4 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uac8c \ub418\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 \uacb0\uacfc\ub97c \ubcf4\uc785\ub2c8\ub2e4.<\/p>\n<p><strong>\uacb0\uacfc:<br \/>\n<\/strong>printing&#8230;<br \/>\ncomputing&#8230;<br \/>\n100<br \/>\ncomputing&#8230;<br \/>\n101<br \/>\ncomputing&#8230;<br \/>\n102<\/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\u00a0(You&#8217;re here) Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Qualifier\u00a0 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding\u00a0 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 \uc778\uc81d\uc158\uc758 \uc885\ub958(Direct vs Lazy vs Provider) [&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\/1297"}],"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=1297"}],"version-history":[{"count":9,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1297\/revisions"}],"predecessor-version":[{"id":45072,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1297\/revisions\/45072"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}