@Named annotation in Spring MVC

后端 未结 2 1395
北荒
北荒 2020-12-03 21:41

Per Spring 3 document, The IoC container, the @Named annotation is a standard equivalent to the @Component annotation.

Since @Reposit

相关标签:
2条回答
  • 2020-12-03 21:43

    @Named works the same as @Component. However, the annotations @Controller, @Service, and @Repository are more specific.

    From the Spring docs:

    @Component is a generic stereotype for any Spring-managed component. @Repository, @Service, and @Controller are specializations of @Component for more specific use cases, for example, in the persistence, service, and presentation layers, respectively.

    For example, these stereotype annotations make ideal targets for pointcuts. It is also possible that @Repository, @Service, and @Controller may carry additional semantics in future releases of the Spring Framework. Thus, if you are choosing between using @Component or @Service for your service layer, @Service is clearly the better choice. Similarly, as stated above, @Repository is already supported as a marker for automatic exception translation in your persistence layer.

    This section explains the difference with @Named.

    Many components, like Spring's DispatcherServlet (MVC configuration in WebApplicationContext) aren't looking for Component, they are looking for @Controller. So when it scans your class, it won't find it in @Named. In a similar fashion, transaction management with @Transactional looks for @Service and @Repository, not for the more generic @Component.

    0 讨论(0)
  • 2020-12-03 22:00

    All @Repository, @Service and @Controller are mainly for declaring Spring beans, apart from that it gives extra information to Spring about the type of bean like controller, dao etc

    0 讨论(0)
提交回复
热议问题