Giter VIP home page Giter VIP logo

dubbo-springmvc's Introduction

#新项目地址:https://git.oschina.net/wuyu15255872976/dubbox.git #基于dubbo 扩展的springmvc插件,自动发布相关rest接口,零入侵现有代码.

把spring(duubo)接入到http网关,基于springmvc实现
1.	自动注册到本地springmvc容器.
2.	完成参数注入与rest输出(json/xml),开放支持个性化设置
3.	注册到注册中心与网关服务打通(nginx),建议使用基于nginx的 kong ,后台监控zookeeper,自动配置存活机器url,建立一定的规则进行转发.
4.	客户端从网关加载api列表统一网关调用(需要dubbo客户端完成)
5.	授权/负载/监控


默认发布地址
	发布规则:http://ip:port:8090/组/service版本/接口名/方法名
	
支持url直接调用
	默认每个方法暴露地址
	地址:http://localhost:8090/defaultGroup/0.0.0/userService/getById

支持json直接调用(POST提交)
	调用地址L:http://host:port/
		{"group":"组","version":"版本","service":"调用的服务","method":"调用的方法","args":[参数1,参数2]}

	example:
		{"group":"defaultGroup","version":"0.0.0","service":"userService","method":"insert","args":[{"id":7841,"username":"张三"}]}


支持所有springmvc 注解.
	
	//可以不指定produce  默认会自动序列化成json
	@RequestMapping(value="/{id}",produces=MediaType.APPLICATION_JSON_VALUE)
	public User findById(@PathVariable("id") Integer id){
		return new User()
				.setId(id)
				.setPassword("123456")
				.setRegisterDate(new Date())
				.setUsername("test")
				.build();
	}
	
	//只接受请求头为application/json
	@RequestMapping(value="/register",consumes=MediaType.APPLICATION_JSON_VALUE)
	//只做简单返回
	public User register(@RequestBody User user){
			return user;
	}
	
	//注入request,response
	@RequestMapping(value="delete")
	public String delete(HttpServletRequest request,HttpServletResponse response){
		String id = request.getParameter("id");
		return id;
	}
	
	//上传文件,需要在dubbo-springmvc.xml配置 CommonsMultipartResolver
	@RequestMapping(value = "upload")
	public List<String> upload(MultipartFile file) throws IOException {
		List<String> readLines = IOUtils.readLines(file.getInputStream());
		return readLines;
	}

#查看信息 可在dubbo-springmvc.xml中开启/关闭

	/services			查看发布的url服务并可以做模拟调用,只能查看 自动发布的接口url
	/api				以json方式返回所有服务以及映射地址,返回所有包括自定义url
	/beans				查看bean容器
	/dataSource			查看数据源信息
	/env				查看环境变量信息
	/mem				查看jvm信息
	/thread				查看线程信息

#支持webjars 以jar包方式引入相关js/css/html等静态资源 具体 参考 http://webjars.org

#安装 mvn install -Dmaven.test.skip=true

	<!-- dubbo-springmvc插件 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo-springmvc</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>

#example 增加了两个http容器 tomcat,jetty9

<!-- 如果要使用tomcat server -->
<dubbo:protocol name="springmvc" server="tomcat" port="8080" />

<!-- 如果要使用jetty9 server -->
<dubbo:protocol name="springmvc" server="jetty9" port="8080" />

<!-- 优点:springmvc可以使用spring父容器 -->
<dubbo:protocol name="springmvc" server="servlet" contextPath="" port="8080" />

#增加异常处理SpringmvcExceptionHandler

1.自动将异常以json/xml方式响应给浏览器或调用的客户端
2.可以打上@ErrorMsg注解,自定义要返回异常信息.
	@ErrorMsg(msg = "错误信息",status=500,responseType="application/json;charset=utf-8")

#springmvc拦截器 (使用servlet容器忽略,可按照原生springmvc方式配置)

只需要把jar里的dubbo-springmvc.xml文件拿出来,配置基于springmvc的拦截器即可.

缺点:
	没办法获取到父容器,父容器的bean也就不能使用,必须以SpringUtil.getBean的形式获取相关bean

#新增注解拦截器支持 (使用servlet容器忽略,可按照原生springmvc方式配置) 注解类 @Interceptor(includePatterns={},excludePatterns={}) 缺点 依赖dubbo @Service注解 或xml <dubbo:service interface="org.springframework.web.servlet.HandlerInterceptor" ref="interceptor 实例"> 优点 处于同一个容器下,可以注入相关bean.

#依赖jar org.hibernate hibernate-validator 4.3.1.Final

	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo</artifactId>
		<version>2.5.3</version>
	</dependency>
	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>4.1.7.RELEASE</version>
		<scope>compile</scope>
	</dependency>
	
	<!--如果需要websocket-->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-websocket</artifactId>
		<version>4.1.7.RELEASE</version>
	</dependency>
	
	<!-- 如果要使用tomcat server -->
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-core</artifactId>
		<version>8.0.11</version>
		<scope>compile</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-logging-juli</artifactId>
		<version>8.0.11</version>
		<scope>compile</scope>
	</dependency>
	
	<!-- 如果要使用jett9 server -->
	<dependency>
		<groupId>org.eclipse.jetty.aggregate</groupId>
		<artifactId>jetty-all</artifactId>
		<version>9.2.15.v20160210</version>
	</dependency>
	
	<!-- 如果要使用xml  需要在dubbo-springmvc.xml配置相关转换器,具体参考springmvc -->
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-core</artifactId>
		<version>2.3.3</version>
	</dependency>
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-databind</artifactId>
		<version>2.3.3</version>
	</dependency>
	
	
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>
		<version>1.2.7</version>
	</dependency>

dubbo-springmvc's People

Contributors

wu191287278 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.