`
hujinpeng2005
  • 浏览: 4314 次
文章分类
社区版块
存档分类
最新评论

微服务开发指导

阅读更多
1 开发说明
1.1 project说明
1.1.1 下载地址

工程下载地址:ssh://xxx@apaciccc5086:29418/emarket.git (用git)

demo工程下载地址:ssh://xxx@apaciccc5086:29418/microservice.git(用git)


xxx   表示自己的git用户名

1.1.2 一个parent工程,其他都是子工程

下载后,如下图所示:

有五个工程

l emarket : 父工程。最重要的是包含pom.xml文件。子工程的pom文件都继承它。开发不涉及。

l emarket-config-server : 子工程。配置项集中存放在这里,例如数据库url,数据库用户名和密码等公用的配置项。

l emarket-eureka-server : 子工程。服务注册与发现。开发不涉及。

l emarket-geteway : 子工程。服务网关。

l emarket-trade-service : 子工程。交易服务。需要开发。

每个子工程包含 application.properties和bootstrap.properties 配置文件。

1.1.3 工程启动顺序

先启动emarket-eureka-server, emarket-config-server。再启动具体的微服务工程,例如emarket-trade-service。

1.1.4 emarket-eureka-server 的配置说明

#端口号

server.port=8761

#地址

eureka.instance.hostname=localhost

eureka.client.registerWithEureka=false

eureka.client.fetchRegistry=false

# 客户端访问的 eureka地址 (重要)

eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

eureka.server.enableSelfPreservation=false

1.1.5 emarket-config-server 的配置说明

#eureka地址和端口 (重要)

eureka.client.serviceUrl.defaultZone=http://${eureka.host:APACICCC5088}:${eureka.port:8762}/eureka/

1.1.6 emarket-trade -service 的配置说明

#指明mybatis的总的sqlmap配置文件

mybatis.config=sql-map-config.xml

#eureka地址和端口 (重要)

eureka.client.serviceUrl.defaultZone=http://${eureka.host:APACICCC5088}:${eureka.port:8762}/eureka/

#serviceID (重要,一个微服务只能有一个名字)

spring.application.name=cloudservice

1.2 direct调用服务说明

map.put("pageFrom", (dataset.getPageNo() - 1)* dataset.getPageSize());

map.put("pageSize", dataset.getPageSize());

RestTemplate rt = (RestTemplate) ContainerManager.getComponent(RestTemplate.class);

Object obj[] = rt.postForObject("http://172.30.105.81:8181/test/", map, Object[].class);

long count = (Integer) obj[1];

List list = (List) obj[0];

RestTemplate 提供postForObject (url(请求url), request(请求参数), responseType(返回值类型))

1.3 服务调用服务说明

1 首先写一个调用接口,如下:

@FeignClient("cloudservice")

public interface IRemoteService {

//value是请求地址,method是请求方法(总共有get,post,put,delete)

@RequestMapping(value = "/test", method = RequestMethod.GET)

public String query(@RequestBody Map<String, Object> map);

}

2 使用这个接口,例子如下:

@Service

public class AlopService implements IAlopService {

@Autowired

IRemoteService service = null;

//实际调用服务的地方

public String test3(){

return service.query();

}

}



1.4 开发一个微服务

1 首先写一个服务接口

public interface INameListService {

public Object[] queryNameList(Map<String, Object> map);

}

2 写接口的实现类

@Service

public class NameListSericeImpl implements INameListService {

@Resource(name = "defaultService")

private IDefaultService service = null;

@Override

public Object[] queryNameList(Map<String, Object> map) {

int pageFrom =0; //起始页

if(map.get("pageFrom")!=null){

pageFrom = Integer.parseInt((String)map.get("pageFrom"));}

int pageSize =10; //每页显示条数

if(map.get("pageSize")!=null){

pageSize = Integer.parseInt((String)map.get("pageSize"));}

//分页查询

return service.getCommonPaged(

"com.spdbccc.common.db.select.selectMyFollow", "com.spdbccc.common.db.select.countMyFollow", map ,

pageFrom , pageSize );

}

}

3 写一个controller对外暴露这个服务。

@Controller

public class NameListController {

@Autowired

INameListService service ;

@RequestMapping("/test")

@ResponseBody

public Object[] queryNameList(@RequestBody Map<String, Object> map){

return service.queryNameList(map);

}

}

1.5 REST URL对外接口定义规则
Http Methods

GET


获取,查找

POST


新增创建

PUT


更新

DELETE


删除





URL组成

    网络协议(HTTP)
    服务器地址(我们用服务名 spring.application.name)
    版本
    接口名称
    ?参数列表


1.5.1 Get方法示例:

@RequestMapping(value="/v1/alopApply/{applyId}",method=RequestMethod.GET)

public AlopApplyVO findByAlopApply(@PathVariable("applyId ") int applyId);

说明: applyId参数出现在url中,写@PathVariable ,才能获得{applyId}参数

/v1/alopApply/{applyId} v1表示版本号(v小写字母)


1.5.2 Post方法示例:

@RequestMapping(value="/v1/alopApply/add",method=RequestMethod.POST)

public int addAlopApply(@RequestBody Map<String, Object> map);

说明: post用作创建。请求过来的参数是集合或者自定义bean , 需要写 @RequestBody

1.5.3 Put方法示例:

@RequestMapping(value = "/v1/alopApply/edit", method = RequestMethod.PUT)

public String editUser(String user);

说明: put方法用作修改。

1.5.4 Delete方法示例:

@RequestMapping(value = "/v1/alopApply/delete/{applyId}", method = RequestMethod.DELETE)

public String removeUser(@PathVariable("applyId") int applyId);

说明: delete 删除操作(包括逻辑删除)。

1.5.5 总结

    RequestMapping 只能添加在方法上,不能添加在接口上。
    RequestMapping的value以版本号为前缀(“/version/path”),method必须提供并且只能限定为一种,比如:
    @RequestMapping(value = "/v1/apply", method = RequestMethod.GET)
    接口方法的名称必须以版本号为后缀,比如:searchV1(),findByIdV2();

    接口方法必须提供完善且符合要求的注释,以便自动生成API文档。
分享到:
评论

相关推荐

    微服务开发手册.pdf

    总之,《微服务开发手册》提供了一套完整的微服务开发指导,包括选用的技术栈、接口设计原则、服务注册、配置管理以及代码组织等,帮助开发者构建高效、稳定的微服务体系。通过遵循这些规范,可以实现微服务间的顺畅...

    微服务开发

    dubbo 微服务开发技术指导方案;dubbo 微服务开发技术指导方案

    go-micro微服务开发框架(中文指导)

    ### go-micro 微服务开发框架(中文指导) #### 概述 go-micro 是一个专为简化分布式系统开发而设计的微服务生态系统。随着云计算技术的快速发展,开发者们面临着如何有效利用几乎无限的扩展能力的挑战。go-micro ...

    微服务上云开发全套教材&实践

    本课程为微服务上云开发的指导课程,涵盖微服务架构解析、服务中心、路由网关、...2. 了解各个微服务组件的运行机理,初步掌握微服务开发能力; 3. 了解DevOps持续交付理念,学会使用DevCloud完成简单的敏捷开发实践。

    微服务开发完全手册.rar

    《微服务开发完全手册》是一本全面探讨微服务架构及其实现细节的资源包,旨在帮助开发者深入理解和实践微服务开发。以下是对手册各部分内容的详细解析: 1、**开发说明**:这部分通常涵盖微服务架构的基础概念,...

    mica 微服务开发工具 v2.7.17.1.zip

    《mica微服务开发工具v2.7.17.1——深度解析与应用实践》 mica微服务开发工具,作为一个重要的系统软件工具,旨在为开发者提供高效、便捷的微服务开发环境。版本v2.7.17.1在前一版本的基础上进行了优化和更新,提升...

    微服务快速开发系统(阿里巴巴Dubbo版本)

    系统部署文档(如MS Admin微服务快速开发系统部署步骤.docx)会详细指导如何配置上述所有组件,包括环境设置、服务启动和集成测试等步骤。源码和SQL脚本的提供则有利于开发者深入了解系统结构并进行二次开发。 综上...

    微服务开发十二要素

    ### 微服务开发十二要素详解 #### 一、引言 随着互联网技术的发展,软件越来越多地以服务的形式被提供给用户,即所谓的“软件即服务”(Software as a Service,简称SaaS)。为了更好地构建这类服务,Heroku创始人...

    创建一个微服务流程,demo示例

    CI/CD是微服务开发的关键实践,它确保代码的快速迭代和可靠部署。Jenkins、GitLab CI/CD 和CircleCI等工具可以帮助实现自动化测试、构建和部署流程。 8. **数据管理**: 微服务通常拥有自己的数据库,以保持服务...

    微服务上云开发全套教槽+实践

    本课程为微服务上云开发的指导课程,涵盖微服务架构解析、服务中心、路由网关、服务生产与消费、缓存服务、消息系统等多个技术点的深度解析。 配备真实云端开发环境的实践作业,帮助开发者快速掌握微服务上云开发...

    DDD指导微服务拆分的详细流程和案例

    DDD指导下的微服务拆分流程通常包括以下步骤: 1. **识别领域**:首先,我们需要理解业务领域,识别关键的业务实体、值对象、聚合和领域事件。这有助于定义服务的边界。 2. **定义限界上下文**:限界上下文是DDD中...

    手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip

    在视频教程"手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像"中,讲解者会详细指导如何下载、安装并配置这些组件,确保开发者能够快速上手微服务开发。通过观看这个录像,初学者将能够了解微服务开发...

    基于DDD的微服务设计和开发实战.pdf

    通过上述设计思想、方法和过程,指导团队按照 DDD 设计思想完成微服务设计和开发。 通过领域模型和 DDD 的分层思想,屏蔽外部变化对领域逻辑的影响,确保交付的软件产品是边界清晰的微服务,而不是内部边界依然混乱...

    基于微服务架构的分布式开发平台.pdf

    分布式开发平台则是基于微服务架构理念,配合Spring Cloud框架,将系统的各个功能模块封装成服务,实现服务的独立开发、部署和管理。平台通常包含几个关键层次: 1. 公共开发工具层:提供与二次开发相关的工具和...

    从业务架构到微服务

    - **领域模型**:基于业务架构进一步细化,通过领域模型来指导微服务的设计与实现。 #### 微服务的技术实现 - **微服务的调用层选择**:在微服务架构中,服务间的调用至关重要。根据提供的选项,正确的做法通常是...

    Go容器化微服务系统实战(全套视频+资料).rar

    教程内容涵盖了从微服务架构设计到Docker容器化部署的全过程,通过实例演示和详细讲解,带领学习者逐步掌握Go语言在微服务开发中的应用技巧和最佳实践。 适用人群: 对Go语言和容器化微服务开发感兴趣的开发者和...

    基于SpringCloud Finchley.RELEASE的微服务开发脚手架,整合了spring-security-oauth2、springboot-adm

    基于SpringCloud Finchley.RELEASE的微服务开发脚手架,整合了spring-security-oauth2、springboot-admin、feign、hystrix、spring-cloud-gateway、turbine等全家桶全部资料+详细文档+优秀项目.zip 【备注】 1、该...

Global site tag (gtag.js) - Google Analytics