@Repository、@Service、@Controller 和 @Component

  @Repository 、@Service 、 @Controller 、@Component 这四个Spring注解 ,用于把加了注解的 类 加入到Spring 容器中管理,节省了xml 的繁重的配置,尽管如此xml 同样可以实现(一般建议先搞懂xml)。

@Repository

  @Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。同时,为了让 Spring 能够扫描类路径中的类并识别出 @Repository 注解,需要在 XML 配置文件中启用Bean 的自动扫描功能,这可以通过 <context:component-scan/> 实现。

<context:component-scan base-package=”com.dao” /> 

  如此,我们就不再需要在 XML 中显式使用 <bean/> 进行Bean 的配置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有 class文件,所有标注了 @Repository 的类都将被注册为 Spring Bean。  

  为什么 @Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。

@Service        通常作用在业务层,但是目前该功能与 @Component 相同。

@Contryoller       通常作用在控制层,但是目前该功能与 @Component 相同。

@Component       是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。

  通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。

  谢谢大家的关注,续更ing......

  

时间: 2024-10-07 21:01:43

@Repository、@Service、@Controller 和 @Component的相关文章

SpringAnnotation注解之@Component,@Repository,@Service,@Controller

@Component:组件,表示此写上了此注解的bean,作为一个组件存在于容器中.这样的话别的地方就可以使用@Resource这个注解来把这个组件作为一个资源来使用了.初始化bean的名字为类名首字母小写 与@Component注解功能相同的注解有:@Repository,@Service,@Controller,@Component ,默认情况下Spring认为这4个注解会被认为是一个组件. @Repository:数据层,一般放在Dao接口的实现类上 @Service:服务层,一般放在se

@Component @Repository @Service @Controller

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

Spring注解 Component Repository Service Controller区别

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

使用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="http://ww

Spring 注解@Component,@Service,@Controller,@Repository

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

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

继前几章所讲解的注解中: http://www.cnblogs.com/EasonJim/p/6892280.html http://www.cnblogs.com/EasonJim/p/6899747.html http://www.cnblogs.com/EasonJim/p/6901115.html 发现上述遗漏了一些注解,比如:@Repository.@Service.@Controller.@Component,现在做如下补充: Spring自2.0版本开始,陆续引入了一些注解用于简化

(转载)Spring 注解@Component,@Service,@Controller,@Repository

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

What&#39;s the difference between @Component, @Repository &amp; @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 "Layers&qu

[转]what’s the difference between @Component ,@Repository &amp; @Service annotations in Spring

原文地址:https://www.cnblogs.com/softidea/p/6070314.html @Component is equivalent to <bean> @Service, @Controller , @Repository = {@Component + some more special functionality} That mean Service,Controller and Repository are functionally the same. The t