{"id":1289,"date":"2019-05-27T23:29:05","date_gmt":"2019-05-27T14:29:05","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=1289"},"modified":"2021-05-11T12:30:11","modified_gmt":"2021-05-11T03:30:11","slug":"dagger2%eb%a5%bc-%ec%95%8c%ec%95%84%eb%b3%b4%ec%9e%90-scope","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=1289","title":{"rendered":"Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Scope"},"content":{"rendered":"<p><a href=\"https:\/\/www.charlezz.com\/?p=1259\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; \uae30\ubcf8\ud3b8<\/a> <br \/>\nDagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Scope\u00a0(You&#8217;re here) <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> <br \/>\n<a href=\"https:\/\/www.charlezz.com\/?p=1313\">Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding<\/a> <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>Dagger\uc758 Scope<\/h2>\n<h4>@Singleton<\/h4>\n<p>Scope \uc560\ub178\ud14c\uc774\uc158\uc744 \ud1b5\ud574 \ud2b9\uc815 \uadf8\ub798\ud504 Scope\ub0b4\uc5d0\uc11c \uac1d\uccb4\uc758 \uc7ac\uc0ac\uc6a9\uc5ec\ubd80\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c @Singleton \uc560\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec Scope\ub97c \uc9c0\uc815\ud558\uace0 \uac1d\uccb4\ub97c \uc7ac\uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub4c8\ud074\ub798\uc2a4\uc5d0\uc11c @Provides\uba54\uc18c\ub4dc \ub610\ub294 \uc778\uc81d\ud2b8 \uac00\ub2a5\ud55c \ud074\ub798\uc2a4\uc5d0\uc11c @Singleton \uc560\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"marking:true lang:java mark:2 decode:true\">@Provides\r\n@Singleton\r\nString provideName(){\r\n    return \"Charles\";\r\n}<\/pre>\n<pre class=\"marking:true lang:java mark:1 decode:true\">@Singleton\r\npublic class CC {\r\n    ...\r\n    @Inject\r\n    public CC(AA aa, BB bb){\r\n        ...\r\n    }\r\n}<\/pre>\n<p>\ub9c8\ucc2c\uac00\uc9c0\ub85c Component\uc5d0\ub3c4 @Singleton \uc560\ub178\ud14c\uc774\uc158\uc744 \ubd99\uc5ec\uc57c\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"marking:true lang:java mark:2 range:10 decode:true\">@Component(modules = {AModule.class, BModule.class})\r\n@Singleton\r\npublic interface MyComponent {\r\n    ...\r\n}<\/pre>\n<p>\ucef4\ud3ec\ub10c\ud2b8\uc5d0 \ubd99\uc740 Scope(\ubc94\uc704)\ub0b4\uc5d0\uc11c \uac1d\uccb4\ub4e4\uc744 \uad00\ub9ac \ud558\uac8c \ub418\uace0, \ucc98\uc74c \uc694\uccad\uc2dc\uc5d0\ub9cc \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uace0 \uadf8 \ub2e4\uc74c \ubd80\ud130\ub294 \ucc98\uc74c\uc5d0 \uc81c\uacf5\ud55c \uac19\uc740 \uc778\uc2a4\ud134\uc2a4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>@Singleton \uc560\ub178\ud14c\uc774\uc158\uc744 \ubd99\uc600\ub2e4 \ub5d0\ub2e4\ud558\uba74\uc11c, \ub85c\uadf8 \ubc0f \ub514\ubc84\uae45\uc744 \ud1b5\ud574 \uac1d\uccb4\uc758 hashCode() \uac12\uc744 \ud655\uc778\ud574\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<h4>@Reusable<\/h4>\n<p>@Reusable\ub3c4 @Singleton\uc744 \ube44\ub86f\ud55c \ub2e4\ub978 \ucee4\uc2a4\ud140 \uc2a4\ucf54\ud504\uc640 \ube44\uc2b7\ud55c \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \ud2b9\uc815 \ucef4\ud3ec\ub10c\ud2b8 \uc2a4\ucf54\ud504\uc5d0 \uc885\uc18d\ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 @Reusable\uc744 \uc120\uc5b8\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4. \uc774\uc804 \uac1d\uccb4\ub97c \uc7ac\uc0ac\uc6a9\uac00\ub2a5\ud558\uba74 \uc7ac\uc0ac\uc6a9\ud558\uace0 \uc544\ub2c8\uba74 \uc0c8\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc989 \ub2e4\ub978 \uc2a4\ucf54\ud504 \uc560\ub178\ud14c\uc774\uc158\ucc98\ub7fc \uac19\uc740 \uc778\uc2a4\ud134\uc2a4\uc784\uc744 \ubcf4\uc7a5\ud558\uc9c4 \uc54a\uc2b5\ub2c8\ub2e4. \ud56d\uc0c1 \ub3d9\uc77c\ud55c \uc778\uc2a4\ud134\uc2a4\ub97c \uc0ac\uc6a9\ud574\uc57c\ud558\ub294\uac8c \uc544\ub2c8\ub77c\uba74 \uba54\ubaa8\ub9ac \uad00\ub9ac\uce21\uba74\uc5d0\uc11c \uc870\uae08 \ub354 \ud6a8\uc728\uc801\uc785\ub2c8\ub2e4.<\/p>\n<h3>Custom scope<\/h3>\n<p>\ubb3c\ub860 @Singleton\ub300\uc2e0 Custom scope\uc744 \ub9cc\ub4e4 \uc218 \ub3c4 \uc788\uc2b5\ub2c8\ub2e4.\u00a0Scope\ub0b4\uc5d0\uc11c \ub354 \uc791\uc740 Scope\ub97c \uc9c0\uc815\ud560 \ub54c, @Singleton \uc560\ub178\ud14c\uc774\uc158 \ud558\ub098\ub85c Scope\ub97c \ub098\ub20c\uc21c \uc5c6\uc744\ud14c\ub2c8 \ub9d0\uc774\uc8e0. \uc544\ub798\uc640 \uac19\uc774 \ucee4\uc2a4\ud140 \uc2a4\ucf54\ud504\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">@Scope\r\n@Retention(RetentionPolicy.RUNTIME)\r\npublic @interface UserScope {\r\n}<\/pre>\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(You&#8217;re here) Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Injection\uc758 \uc885\ub958 Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Qualifier Dagger2\ub97c \uc54c\uc544\ubcf4\uc790 &#8211; Binding 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 Dagger\uc758 Scope @Singleton Scope \uc560\ub178\ud14c\uc774\uc158\uc744 \ud1b5\ud574 [&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\/1289"}],"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=1289"}],"version-history":[{"count":14,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1289\/revisions"}],"predecessor-version":[{"id":45071,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/1289\/revisions\/45071"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}