{"id":16735,"date":"2013-08-28T19:00:21","date_gmt":"2013-08-28T16:00:21","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=16735"},"modified":"2013-08-28T12:28:10","modified_gmt":"2013-08-28T09:28:10","slug":"basic-injection-qualifiers-scope","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html","title":{"rendered":"Basic Injection \/ Qualifiers, Scope"},"content":{"rendered":"<p>This is a continuation of the DI\/CDI Basics tackled last week \u00a0&#8211; in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope.<\/p>\n<p>In our last topic, there we\u2019re a great deal of information regarding the concepts of DI\/CDI, we also discussed how these beans or class loaded using the annotations \u00a0-that makes up the composition of the object and created samples on how can we declare them programmatically. In this post, we will tackle more on the injection part, e.i how to acquire a certain resource and <strong>inject<\/strong> them on another resource for usage.<\/p>\n<p>So how to inject a bean in the first place?<br \/>\n&nbsp;<\/p>\n<h2>Basic Injection<\/h2>\n<h4><strong>How do you inject a Bean?<\/strong><\/h4>\n<ul>\n<li>Use @Inject &lt;Java-Type&gt; &lt;variable&gt; for field injection<\/li>\n<li>&lt;Java-Type&gt; can be Java class or Java interface<\/li>\n<\/ul>\n<pre class=\" brush:java\">public class MyGreeter {\r\n   \/\/ Inject Greeting object for field injection\r\n   @Inject Greeting greeting;\r\n   public sayGreeting(String name){\r\n      \/\/ You can then used the injected Greeting object\r\n      System.out.println(greeting.greet(name)); \r\n   }\r\n}<\/pre>\n<h4><strong>Where can beans be injected?<\/strong><\/h4>\n<p>Bean can be injected at \u201cInjection points\u201d <\/p>\n<ul>\n<li>Field<\/li>\n<li>Method parameter<\/li>\n<\/ul>\n<p><strong>Method can be:<\/strong><\/p>\n<ul>\n<li>Constructor (useful for created immutable object) &gt; Initializer<\/li>\n<li>Setter method<\/li>\n<li>Producer<\/li>\n<li>Observer<\/li>\n<\/ul>\n<pre class=\" brush:java\">public class MyGreeter {\r\n   private Greeting greeting;\r\n   \/\/ Use constructor method injection\r\n   @Inject\r\n   public MyGreeter(Greeting greeting) {\r\n      this.greeting = greeting; \r\n   }\r\n   public sayGreeting(String name){\r\n      System.out.println(greeting.greet(name)); \r\n   }\r\n}<\/pre>\n<h2>Qualifiers<\/h2>\n<p>Qualifiers are used to assign a specific bean if there are multiple implementation type (interface and child classes). Say you have two candidates (implementation class) for a specific interface:<\/p>\n<ul>\n<li>Interface is Person<\/li>\n<li>Class 1 is Regular Person<\/li>\n<li>Class 2 is NonRegular Person<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/c_diagram_person.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/c_diagram_person-300x176.jpeg\" alt=\"c_diagram_person\" width=\"300\" height=\"176\" class=\"aligncenter size-medium wp-image-16799\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/c_diagram_person-300x176.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/c_diagram_person.jpeg 639w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>We can use Qualifiers to cleanly designate the implementation of classes by introducing \/ creating an Qualifier annotation of your own:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><strong>RegularPerson Qualifier Annotation:<\/strong><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/p_qualifier.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/p_qualifier-300x129.jpeg\" alt=\"p_qualifier\" width=\"300\" height=\"129\" class=\"aligncenter size-medium wp-image-16800\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/p_qualifier-300x129.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/p_qualifier.jpeg 423w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>NonRegularPerson Qualifier Annotation:<\/strong><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_qualifier.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_qualifier-300x131.jpeg\" alt=\"non_reg_qualifier\" width=\"300\" height=\"131\" class=\"aligncenter size-medium wp-image-16801\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_qualifier-300x131.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_qualifier.jpeg 430w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Now we need to create an implementation class and tag it to the Qualifier we created.<\/p>\n<p><strong>RegularPersonImpl:<\/strong><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/regular_impl.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/regular_impl-300x85.jpeg\" alt=\"regular_impl\" width=\"300\" height=\"85\" class=\"aligncenter size-medium wp-image-16802\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/regular_impl-300x85.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/regular_impl.jpeg 719w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>NonRegularPersonImpl:<\/strong><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_impl.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_impl-300x74.jpeg\" alt=\"non_reg_impl\" width=\"300\" height=\"74\" class=\"aligncenter size-medium wp-image-16803\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_impl-300x74.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/non_reg_impl.jpeg 736w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Note:<\/strong> You can have as many qualifiers as possible \u2013 remember that Qualifiers are meant to separate logical objects implementation from its common interface.<\/p>\n<p>Now that the implementation is set, we can now Inject the class and use its qualifier.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/impl.jpeg\"><img decoding=\"async\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/impl-300x186.jpeg\" alt=\"impl\" width=\"300\" height=\"186\" class=\"aligncenter size-medium wp-image-16804\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/impl-300x186.jpeg 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/08\/impl.jpeg 811w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>In this example, you can clearly see the usage, by introducing a Qualifier, developer can clearly specify the implementation type by annotation.<\/p>\n<p>Download the example <a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/cdi-di-example-04-qualifier.zip\">here<\/a>.<\/p>\n<p>Other things you can do with Qualifiers?<\/p>\n<p>I won\u2019t be discussing further what else can you do with qualifiers, instead, I\u2019ll give let you check this examples for you to try and explore:<\/p>\n<ul>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/cdi-di-example-07-multi-qualifier.zip\">Multiple Qualifier<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/cdi-di-example-08-qualifier-attribute.zip\">Qualifier with Attributes<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/cdi-di-example-09-qualifier-multi-attributes.zip\">Qualifier with Multiple Attributes\u00a0<\/a><\/li>\n<\/ul>\n<h2>Scope<\/h2>\n<p>Why in the first place we need Scope on our Objects? \u2013 \u00a0For Web applications, we need our beans to hold state over the duration of the user\u2019s interaction with the application, for example, across multiple requests to the server.<\/p>\n<p>There are 5 types of scopes that developers can assign to an object:<\/p>\n<ul>\n<li><strong>@Dependent (default)<\/strong>\n<ul>\n<li>The default scope if none is specified; it means that an object exists to serve exactly one client (bean) and has the same lifecycle as that client (bean).<\/li>\n<\/ul>\n<\/li>\n<li><strong>@RequestScoped<\/strong>\n<ul>\n<li>State of an object is maintained during a user\u2019s interaction with web application in a single HTTP request.<\/li>\n<\/ul>\n<\/li>\n<li><strong>@SessionScoped<\/strong>\n<ul>\n<li>State of an object is maintained during user\u2019s interaction with a web application across multiple HTTP requests.<\/li>\n<\/ul>\n<\/li>\n<li><strong>@ApplicationScoped<\/strong>\n<ul>\n<li>Shared state across all users\u2019 interactions with a web application.<\/li>\n<\/ul>\n<\/li>\n<li><strong>@ConversationScoped<\/strong>\n<ul>\n<li>Conversation context is demarcated explicitly by the application\n<ul>\n<li>Spans multiple requests<\/li>\n<li>But \u201cSmaller\u201d than session<\/li>\n<\/ul>\n<\/li>\n<li>Used when you want to have explicit boundaries of multiple conversations within a single session<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>I won\u2019t be diving into the details here but what I\u2019ll provide you are actual examples that you can run. Download the projects here.<\/p>\n<ul>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/inject_scope_depedent.zip\">Dependent<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/inject_scope_request.zip\">Request<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/inject_scope_session.zip\">Session<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/inject_scope_application.zip\">Application<\/a><\/li>\n<li><a href=\"https:\/\/dl.dropboxusercontent.com\/u\/1737239\/inject_scope_conversation.zip\">Conversation<\/a><\/li>\n<\/ul>\n<p>Next Stop: DI \/ CDI \u2013 Advance<\/p>\n<p>With this new features, you can clearly observe and imagine how it will improve developer productivity by simplifying a lot of processes to setup a Web Application \u2013 Qualifiers can be created to clearly separate logical \/ business beans with a common goal (by interface), scoping let developers control the flow and manage the state of objects \u2013 and the simplification of calling beans directly from the UI thru EL makes it more straightforward.<\/p>\n<p>Please do check the samples and try them on your own, it would be better to check an actual example than by just reading thru the details and concepts. Enjoy!<br \/>\n&nbsp;<\/p>\n<div style=\"border: 1px solid #D8D8D8; background: #FAFAFA; width: 100%; padding-left: 5px;\"><b><i>Reference: <\/i><\/b><a href=\"http:\/\/alvinjayreyes.com\/2013\/08\/21\/basic-injection-qualifiers-scope\/\">Basic Injection \/ Qualifiers, Scope<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Alvin Reyes at the <a href=\"http:\/\/alvinjayreyes.com\/\">Alvin &#8220;Jay&#8221; Reyes Blog<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is a continuation of the DI\/CDI Basics tackled last week \u00a0&#8211; in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last topic, there we\u2019re a great deal of information regarding the concepts of DI\/CDI, we also discussed how these beans or class loaded using the annotations \u00a0-that makes up the &hellip;<\/p>\n","protected":false},"author":197,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[290],"class_list":["post-16735","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-cdi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Basic Injection \/ Qualifiers, Scope<\/title>\n<meta name=\"description\" content=\"This is a continuation of the DI\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Basic Injection \/ Qualifiers, Scope\" \/>\n<meta property=\"og:description\" content=\"This is a continuation of the DI\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2013-08-28T16:00:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Alvin Reyes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alvin Reyes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html\"},\"author\":{\"name\":\"Alvin Reyes\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/ac48ce50b2e5027d82ecbe2fa9b455a9\"},\"headline\":\"Basic Injection \\\/ Qualifiers, Scope\",\"datePublished\":\"2013-08-28T16:00:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html\"},\"wordCount\":688,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"CDI\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html\",\"name\":\"Basic Injection \\\/ Qualifiers, Scope\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2013-08-28T16:00:21+00:00\",\"description\":\"This is a continuation of the DI\\\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/08\\\/basic-injection-qualifiers-scope.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Basic Injection \\\/ Qualifiers, Scope\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/ac48ce50b2e5027d82ecbe2fa9b455a9\",\"name\":\"Alvin Reyes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g\",\"caption\":\"Alvin Reyes\"},\"sameAs\":[\"http:\\\/\\\/alvinjayreyes.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Alvin-Reyes\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Basic Injection \/ Qualifiers, Scope","description":"This is a continuation of the DI\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html","og_locale":"en_US","og_type":"article","og_title":"Basic Injection \/ Qualifiers, Scope","og_description":"This is a continuation of the DI\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last","og_url":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2013-08-28T16:00:21+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Alvin Reyes","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Alvin Reyes","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html"},"author":{"name":"Alvin Reyes","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/ac48ce50b2e5027d82ecbe2fa9b455a9"},"headline":"Basic Injection \/ Qualifiers, Scope","datePublished":"2013-08-28T16:00:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html"},"wordCount":688,"commentCount":1,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["CDI"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html","url":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html","name":"Basic Injection \/ Qualifiers, Scope","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2013-08-28T16:00:21+00:00","description":"This is a continuation of the DI\/CDI Basics tackled last week \u00a0- in this post, I\u2019ll be discussing Basic Injection, Qualifiers and Scope. In our last","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2013\/08\/basic-injection-qualifiers-scope.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Basic Injection \/ Qualifiers, Scope"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/ac48ce50b2e5027d82ecbe2fa9b455a9","name":"Alvin Reyes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47d55211c650ea320b9932d0c3e848869fbdd0926c68b17382064c1d3ab0d512?s=96&d=mm&r=g","caption":"Alvin Reyes"},"sameAs":["http:\/\/alvinjayreyes.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Alvin-Reyes"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/16735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/197"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=16735"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/16735\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=16735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=16735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=16735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}