@Component
and @Named
are annotations that basically do the same thing, but come from different APIs.
@Component
belongs 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.
@Named
belongs to javax.inject
API. 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:
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…