Does a class which will act as a bean in a Spring application require both @Component and @Named at the same time?
What is the significance if both are used so?
I tried searching the net as well as saw the standard documentation of these annotations and found them a bit confusing.
Finally which name is taken by the application if the @Named annotation does not specify any name for the bean?
@Componentand@Namedare annotations that basically do the same thing, but come from different APIs.@Componentbelongs to Spring API. It marks class to be autodetected as a bean and optionally allows you to specify a name for that bean (@Component("foo")). Without explicit name specification detected bean will get a default name derived from the name of its class.@Namedbelongs tojavax.injectAPI. It marks class to be autodetected as a bean and requires you to specify a name.Spring supports both these APIs. It doesn’t make sense to use both annotations at the same class since they provide the same functionality.
See also: