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
版权声明:本文为博主原创文章,转载请附上博文链接!
org.springframework.stereotype.Service和com.alibaba.dubbo.config.annotation.Service两种service的区别的更多相关文章
- Dubbo的@Reference和@Service说明---1Reference用在消费者2Service用在提供者【import com.alibaba.dubbo.config.annotation.Service;】
@Reference 用在消费端,表明使用的是服务端的什么服务@RestControllerpublic class RemoteUserController { @Reference(version ...
- 手把手教你Dubbo与SpringBoot常用两种方式整合
一.Dubbo整合SpringBoot的方式(1) 1)直奔主题,方式一: pom.xml中引入dubbo-starter依赖,在application.properties配置属性,使用@Servi ...
- 两种Service如何一起使用
1.先是调用startservice来开启服务,并在且在后台一起运行. 2.在调用bindservice,获取中间对象. 3.unbindservice解绑服务. 4.最后在调用stopservice ...
- service的生命周期以及两种service的差异
可以看到,两种service的生命周期都相对简单,有一点不同的是,Intentservice每次调用的时候都执行onstartcommand,而boundservice一旦启动了之后,就不会每次执行o ...
- Spring+Dubbo集成Redis的两种解决方案
当下我们的系统数据库压力都非常大,解决数据库的瓶颈问题势在必行,为了解决数据库的压力等需求,我们常用的是各种缓存,比如redis,本文就来简单讲解一下如何集成redis缓存存储,附github源码. ...
- Android(java)学习笔记227:服务(service)之服务的生命周期 与 两种启动服务的区别
1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...
- 关于android中两种service的编写简单总结
1.startservice (两种方法,继承service类或者继承intentservice 类) 继承service类,在onstartcommend重载方法中实现业务逻辑的处理,如果耗时过长最 ...
- Android(java)学习笔记170:服务(service)之服务的生命周期 与 两种启动服务的区别
1.之前我们在Android(java)学习笔记171:Service生命周期 (2015-08-18 10:56)说明过,可以回头看看: 2.Service 的两种启动方法和区别: (1)Servi ...
- Service官方教程(4)两种Service的生命周期函数
Managing the Lifecycle of a Service The lifecycle of a service is much simpler than that of an activ ...
随机推荐
- 如何用 PyCharm 调试 scrapy 项目
原理: 首先 scrapy 命令其实就是一个python脚本,你可以使用 which scrapy 查看该脚本的内容: from scrapy.cmdline import execute sys.a ...
- Spark2.0机器学习系列之1: 聚类算法(LDA)
在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法: (1)K-means (2)Latent Dirichlet allocation (LDA) ...
- Spark踩坑记:Spark Streaming+kafka应用及调优
前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark streaming从k ...
- jQuery异步加载数据并添加事件示例
当时项目是通过树形栏进行权限控制的,管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作,可是用$(".XX").click();方法是不行的. 1.之前用的是jq1.4.3 ...
- struts2.3+spring3.2+hibernate4.2例子
有些教程比较老,可是版本更新不等人,基于马士兵老师小例子,自己重新引用了新的包,调试确实有点烦人,但是通过英文文档和google解决问题.官网的更新超快,struts2.3+spring3.2+hib ...
- windows平台mongoDB安装配置
一.首先安装mongodb 1.官网下载mongoDB:http://www.mongodb.org/downloads,选择windows平台.安装时,一路next就可以了.我安装在了F:\mong ...
- Oracle获取当前session ID的方法
1.使用v$mystat视图获取当前session的ID select sid from v$mystat; 2.使用userenv内部函数获取当前session的ID select userenv( ...
- Bootstrap 中的插件的学习2(导航)
实例 在导航栏内 下面的实例演示了在导航栏内的下拉菜单的用法: <!DOCTYPE HTML> <html> <head> <link href=" ...
- PL/SQL Developer 登录 Oracle 12c和Win10下安装Oracle 11g
安装了Oracle 12c 后使用PL/SQL Developer怎么也不能连接到Oracle 12c.网上找一下,按照fcflying所说的操作成功了,所以做个笔记: 1)安装Oracle 12c ...
- ubuntu 可能的依赖包,安装过程中根据需要安装
/*************依赖包安装****************/下面是可能的依赖包,安装过程中根据需要安装 build-essential - libglib2.-dev libpng3 li ...