Skip to main content

Learning CDI (Contexts and Dependency Injection) Part 2

This is second part of CDI discussion. If u r not visited, Please visit first part,

Qualifier
           Its annotation, its helps to create our qualifier annotation. We already seen if we have more than one implementation of particular interface then we can't inject, because ambiguity issues are arise. so we need to define own qualifiers and marked the annotation with that qualifier. When inject we need to mention the qualifier.


For Example

We have one interface and two implementation

Hello Interface



HelloImplOne Implementation




HelloImplTwo Implementation


 In Injection  Point (i.e where u inject the class, i.e where u use @inject key word) if u try to inject using interface like this u get AmbiguousResolutionException.


but we can still use like this
@javax.inject.Inject HelloImplOne hello;
@javax.inject.Inject HelloImplTwo hello;


so we need use qualifier

we can create own qulaifier like any class





here
@Qualifier - is annotation to represent that we r creating custom qualifier. while deploying the container
check that class contain qualifier annotation is present. If its present container treat  class as qualifier.

@Retention(RUNTIME) - its like decision maker. this annotation decides that our annotation is present in runtime or compile time.
possible Values are (RUNTIME, CLASS, SOURCE)
RUNTIME - annotation is stored in class file and while running JVM can see the annotation is reflection API
CLASS - annotaion is stored in class file but its not visible in JVM. Its mainly used by deployment time (ie. we can inform to container)
SOURCE - this annotation is not stored in class file. its only used for inform some info to compiler. (Ex: @Override its inform to compiler this method is going to override.).

@Target({METHOD, FIELD, PARAMETER, TYPE}) - What are the places we can use our annotation. here we can use to any method, fields, parameter declaration's and any class and interface see all possible values hereso finally we create 'Hi' qualifier from above code. we use this qualifier to solve the ambiguous problem.take any class implementation from above code (here i take HelloImplTwo) and add our new qualifier 'Hi' with '@' symbol(it represent annotation)

HelloImplTwo Implementation



thats its. now in injection point
if you using like this
then Class HelloImplOne is injected.

if you using like this

then Class HelloImplTwo is injected.


Please see the Third part here


see the Screen cast 




Please see the Third part here


Comments are welcomed

Popular posts from this blog

Understanding Virtual Host Concept in Tomcat

Hi in this post we will see how to setup virtual host in Apache Tomcat server. Virtual Host is in-built feature that allows to deploy multiple website(domains) in single instance of tomcat server. The main benefit in this way is its cost effective. Scenario: I am going to deploy 3 website with following domain names in single tomcat http://www.ramki.com http://www.krishnan.com http://www.blog.ramki.com The following diagram is my outline. Outline structure of Virtual Host Concept in Tomcat Here my tomcat IP address 192.168.1.15. or any IP address allocated my ISP. but it should be public IP address. How all domain names are pointing to my Tomcat?                   When we purchase the domain name we need to update the our tomcat IP address to it. like or we can simulate same DNS Setup through hosts file in both Linux and Windows. In Linux tha file is located at /etc/hosts Now How Setup Virtual Host Concept? Before going to setup the virtual host. first tak

Virtual Host + Apache httpd server + Tomcat + mod_jk connector

In my last post ( Virtual Host in Tomcat ) we discussed about how setup the virtual host in Tomcat. Its cost effective technique because only one public IP is enough to host multiple domain. If we have big organization and each department want to host their website in locally in different machine. then how to achieve the virtual host concept?. In this post we will see the how we do this. Update :   I posted  Virtual Host + Nginx + Tomcat  Its easy to configure, compare to Apache httpd server Problem Scenario:         In big organization they have multiple department, each department want to host their website in different machine. so these websites are accessed locally with different local IP address. When we mapping to public address then we face the problem. We have two choice either purchase as many public address or Put one server front  and delegate these request.  We going to use 2nd option. we put Apache httpd web server in front of all department servers. so onl

Docker : Tomcat Clustering with Load Balancer (Tomcat and Nginx)

In this post i will show Tomcat Clustering in Docker Container. In  my previous post i discussed how to achieve tomcat clustering with Nginx Front end . Its almost same scenario, but this time we will achieve via docker container. Docker Docker  is an  open-source  project that automates the deployment of  applications  inside  software containers , by providing an additional layer of abstraction and automation of  operating-system-level virtualization  on  Linux . [4]  Docker uses resource isolation features of the Linux kernel  such as  cgroups  and kernel  namespaces  to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining  virtual machine   --Wikipedia