参考了网上很多教程,没有现成例子,就自己编写一个,只用Spring容器来管理接口service 用Hprose来发布服务,持久层用mybatis 和mybaits-generat ,这种和springboot稍微不同,可以参考,根据实际业务来;我们的请求是 请求到网关 网关再请求到我们的服务端,服务端暴露接口!
接口和实现类就不贴了
主要是贴下Hprose发布方法:
package com.demo.service;
import com.demo.service.hello.HelloService;
import com.demo.service.user.UserService;
import com.demo.utils.SpringContextUtil;
import hprose.common.HproseMethods;
import hprose.server.HproseServlet;
import org.springframework.stereotype.Component;
/**
* Hprose发布方法
*
* @author Ding.Jie
*/
@Component
public class HproseServletDemo extends HproseServlet {
@Override
public void setGlobalMethods(HproseMethods methods) {
super.setGlobalMethods(methods);
HelloService helloService = (HelloService) SpringContextUtil.getBean("helloService");
UserService userService = (UserService) SpringContextUtil.getBean("userService");
// methods.addMethod("sayHello", helloService);;发布单个方法
methods.addInstanceMethods(helloService);//发布接口下所有的publice方法 请求url要到web.xml配置
methods.addInstanceMethods(userService);//发布接口下所有的publice方法 请求url要到web.xml配置
}
}
web.xml 配置
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>HproseServlet</servlet-name>
<servlet-class>com.demo.service.HproseServletDemo</servlet-class>
<!--开启调试模式-->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!--开启跨域-->
<init-param>
<param-name>crossDomain</param-name>
<param-value>true</param-value>
</init-param>
<!--<init-param>-->
<!--<param-name>class</param-name>-->
<!--<param-value>UserService</param-value>-->
<!--</init-param>-->
<!--限制访问域-->
<!--<init-param>-->
<!--<param-name>origin</param-name>-->
<!--<param-value>http://hprose.org,http://hprose.com</param-value>-->
<!--</init-param>-->
<!--禁用get方法-->
<!--<init-param>-->
<!--<param-name>get</param-name>-->
<!--<param-value>false</param-value>-->
<!--</init-param>-->
</servlet>
<servlet-mapping>
<servlet-name>HproseServlet</servlet-name>
<url-pattern>/api/v1.0.0/javatest/sayHello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HproseServlet</servlet-name>
<url-pattern>/api/v1.0.0/javatest/sayBye</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HproseServlet</servlet-name>
<url-pattern>/api/v1.0.0/javatest/getUser</url-pattern>
</servlet-mapping>
</web-app>
demo下载链接:spring_mybatis_hprose.zip