zoukankan      html  css  js  c++  java
  • org.springframework.stereotype.Service和com.alibaba.dubbo.config.annotation.Service两种service的区别

    这两个Service,都可以在service类头上使用@Service的注解,于是我就写错了,查了半天才发现。
    他们的区别大概是这个样子的:

    org.springframework.stereotype.Service

    org.springframework.stereotype.Service是spring的注解,用于标注业务层组件(service)。
    标注了的组件需要在配置文件里有这样的配置<context:component-scan base-package="这里是包名" ></context:component-scan>

    spring其他的一些差不多功能的注解还有这些:@Repository、@Controller、@Component。
    @Service用于标注业务层组件(我们通常定义的service层就用这个)
    @Controller用于标注控制层组件(如struts中的action)
    @Repository用于标注数据访问组件,即DAO组件
    @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

    另外还有其他几个用于注入的注解,他们是@Resource、@Autowired、@Qualifier
    1,@Resource

         来自javax.annotation.Resource,属于javaEE,并不是spring中的,可以使用@Resource("xxx")来可以定义bean名称。

    2,@Autowired

         来自org.springframework.beans.factory.annotation.Autowired这个包中,它是spring的包,没有@Autowired("xxx")这样的方式定义bean名称。

    3,@Qualifier

         来自org.springframework.beans.factory.annotation.Qualifier,是spring中的注解,可以用@Qualifier("xxx"),在有多个实现的时候会用到。

    com.alibaba.dubbo.config.annotation.Service
    com.alibaba.dubbo.config.annotation.Service是dubbo用于声明provider的注解。
    标注了这个注解的service需要在配置文件里添加这样的配置:<dubbo:annotation package="这里是包名" /> 

    在dubbo中定义了4种关于provider和consumer的配置方式,分别是:
    1. XML 配置文件方式。
       XML里配context:component-scan,dubbo:application,dubbo:registry,dubbo:protocol,dubbo:service或dubbo:reference。
    2. properties 配置文件方式。
       XML里只剩下了dubbo:service或dubbo:reference,在property文件里配dubbo.application.name,dubbo.registry.address,dubbo.protocol.name,dubbo.protocol.port。
    3. annotation 配置方式。
       配置文件中的dubbo:service或dubbo:reference统一替换成了dubbo:annotation,provider的实现类使用@Service注解,consumer中使用@Reference注解。

       另外,如果有加载context:component-scan的controller,那么dubbo:annotation的配置应在controller之前,否则provider的service会加载失败。

    4. API 配置方式。
       API仅用于OpenAPI, ESB, Test, Mock等系统集成,配置是在代码中写死的,比如:ApplicationConfig.setName("xxx") 对应 <dubbo:application name="xxx" />

    另外,如果既需要spring注入又需要当做provider,不能同时使用这两个service注解,因为同名不能import,真要用的话spring的那个可以换成@Component。


    ---------------------
    作者:lkforce
    来源:CSDN
    原文:https://blog.csdn.net/lkforce/article/details/52983345
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    hdu 1520(简单树形dp)
    hdu 1561(树形dp)
    hdu 2809(状压dp)
    hdu 2196(求树上每个节点到树上其他节点的最远距离)
    hdu 4003(树形dp)
    hdu 3899(树形dp)
    hdu 4714(树形dp)
    hdu 3905(dp)
    Linux mariadb(Mysql)的主从复制架构
    面向对象静态变量代码题
  • 原文地址:https://www.cnblogs.com/panchanggui/p/10275987.html
Copyright © 2011-2022 走看看