Spring注解@Component、@Repository、@Service、@Controller区别

很长时间没做web项目都把以前学的那点框架知识忘光了,今天把以前做的一个项目翻出来看一下发现用·@Component标记一个组件,而网上有的用@Service标记组件,我晕就查了一下资料:

Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。
在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。
虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。
所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注

时间: 2024-10-27 00:53:15

Spring注解@Component、@Repository、@Service、@Controller区别的相关文章

What's the difference between @Component, @Repository & @Service annotations in Spring?

    @Component is equivalent to <bean> @Service, @Controller , @Repository = {@Component + some more special functionality} That mean Service,Controller and Repository are functionally the same. The three annotations are used to separate "Layer

请教下关于SSH框架中@Repository/@Service/@Controller注入的问题!

问题描述 各位大大,请问个问题:我在持久层.业务层和控制层中分别使用@Repository/@Service/@Controller这样意义和直接全部使用@Component有什么区别呢? 问题补充:myali88 写道 解决方案 兄弟 那说明我刚才给你说的那个配置 应该是没问题的 这个问题应该是解决了的.解决方案二:我刚才之所以让你 前面加个resource这个东西 是因为你说是同目录,后来发觉肯定是你们头把这个目录和src目录都可以被映射成同一级 相对目录,所以让你改成这样.应该没问题了.解

使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)

  简述: 结合Spring和Hibernate进行开发 使用@Autowired实现依赖注入, 实现一个学生注册的功能,做一个技术原型 从DAO(Repository) -> Service -> Controller   目录结构: 使用Maven做本地包管理, pom.xml   [java] view plaincopy <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt

spring注解 @service 使用报错.

问题描述 spring注解 @service 使用报错. 3个报错: Failed to read candidate component class: file [D:workspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebappsbootstrap-3.3.5WEB-INFclassesfishcodedaouserUserDao.class]; nested exception is org.springframewor

spring mvc注解不能访问到controller

问题描述 spring mvc注解不能访问到controller web.xml配置 <servlet> <servlet-name>annomvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLoca

javaweb-关于spring注解问题。

问题描述 关于spring注解问题. Spring哪句注解可以代替织入bean例如 applicationContent.xml的 <bean id=""contentDao"" class=""com.itschool.dao.ContentDao""></bean> 这个类 public class ContentDao {} 到了这个类里面,头顶要写哪个注解才不需要到配置文件织入啊,我试过写@Co

spring 注解模式 详解

Spring基于注解实现Bean定义支持如下三种注解: Spring自带的@Component注解及扩展@Repository.@Service.@Controller,如图12-1所示: JSR-250 1.1版本中中定义的@ManagedBean注解,是Java EE 6标准规范之一,不包括在JDK中,需要在应用服务器环境使用(如Jboss),如图12-2所示: JSR-330的@Named注解,如图12-3所示.   图12-1 Spring自带的@Component注解及扩展     图

《Spring 5官方文档》35. Spring注解编程模型

介绍 这篇文档是以Spring Framework 4.2作为框架基础编写的,但是,这篇文档是一份还在进行的工作.所以随着时间推移,你会看到这份文档还在更新. 目录 概要 术语 例子 FAQ 附录 概要 这些年,Spring Framework已经频繁的升级它可以支持的注解.元注解和组合注解.这篇文档旨在帮助开发者(Spring框架使用者.Spring核心框架开发者和Spring全家桶的成员项目开发者)开发和运用Spring注解. 这些是文档目标 这篇文档的主要目的包含以下内容: 怎么使用Spr

Spring注解 @Resource和@Autowired

@Resource和@Autowired两者都是做bean的注入使用.其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spring支持该注解的注入. 共同点 两者都可以写在字段和setter方法上.两者如果都写在字段上,就不需要写写setter方法. 如果将@requied或者@autowired写了set方法之上,则程序会走到set方法内部.但如果写在了field之上,则不会进入set方法当中. 不同点 @Autowir