Java @springmvc中的命名注释
根据Spring3文档,Java @springmvc中的命名注释,java,spring-mvc,annotations,jsr330,Java,Spring Mvc,Annotations,Jsr330,根据Spring3文档,@命名的注释是与@组件注释等效的标准 由于@Repository、@Service和@Controller都是@Component,我试图在我的Spring MVC应用程序中为所有这些组件使用@Named。它很好用。但是我发现更换的@Controller似乎有一个bug。在控制器类中,最初是 @Controller public class MyController{ ... } 它很好用。当我将@Controller更改为@Named @Named publi
@命名的
注释是与@组件
注释等效的标准
由于@Repository
、@Service
和@Controller
都是@Component
,我试图在我的Spring MVC应用程序中为所有这些组件使用@Named
。它很好用。但是我发现更换的@Controller
似乎有一个bug。在控制器类中,最初是
@Controller
public class MyController{
...
}
它很好用。当我将@Controller
更改为@Named
@Named
public class MyController{
...
}
失败,错误为:
“找不到URI为的HTTP请求的映射…”
但是如果我将@RequestMapping
添加到类中,如下所示
@Named
@RequestMapping
public class MyController{
...
}
它会像预期的那样工作
对于
@Repository
和@Service
,我可以简单地将它们替换为@Named
,没有问题。但是更换@控制器需要额外的工作。配置中是否缺少任何内容?@Named
的工作原理与@Component
相同。但是,注释@Controller
、@Service
和@Repository
更为具体
从春天开始:
@Component
是任何Spring托管组件的通用原型。
@Repository
、@Service
和@Controller
是
@Component
了解更具体的用例,例如
分别是持久性层、服务层和表示层
例如,这些原型注释是
切入点。也可能是@存储库
,@服务
,以及
@Controller
在未来的
Spring框架。因此,如果您选择使用@组件
或者@Service
对于您的服务层,@Service
显然更好
选择。类似地,如上所述,@Repository
已经得到支持
作为持久化中自动异常转换的标记
层
第节解释了与@Named
的区别
许多组件,比如Spring的DispatcherServlet
(WebApplicationContext中的MVC配置)并不是在寻找组件,而是在寻找@Controller
。因此,当它扫描您的类时,它不会在@Named
中找到它。以类似的方式,使用@Transactional
的事务管理会查找@Service
和@Repository
,而不是更通用的@组件
所有@Repository
,@Service
和@Controller
主要用于声明SpringBeans,除此之外,它还向Spring提供了关于类bean控制器、dao等类型的额外信息这是否意味着我可以安全地使用@Named
替换@Component
进行普通bean注入,但我仍然需要使用@Repository
,@Service
,和@Controller
在Spring MVC中的特定功能?@dino欢迎您。考虑接受这个答案,除非你想等待更多的答案与其他细节。