Reactor-Guice 是一个基于 Reactor 和 Guice 的网络框架, 0.11 功能更新如下
1. 自动扫描带有注解 @Controller 的类,将带类里有 @Path 的方法,并加入到路由
2. 自动扫描带有注解 @Service 的类,将类添加到 Guice 的 Module 中 bind,在其他类里通 @Inject 来注入
通过 Maven 引入
<dependency>
<groupId>com.doopp</groupId>
<artifactId>reactor-guice</artifactId>
<version>0.11</version>
</dependency>
启动服务 ( 例子 )
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
properties.load(new FileInputStream(args[0]));
ReactorGuiceServer.create()
.bind(host, port)
.createInjector(
binder -> Names.bindProperties(binder, properties),
new Module()
)
.setHttpMessageConverter(new MyGsonHttpMessageConverter())
// .setHttpMessageConverter(new MyJacksonHttpMessageConverter())
.setTemplateDelegate(new FreemarkTemplateDelegate())
// .setTemplateDelegate(new ThymeleafTemplateDelegate())
.basePackages("com.doopp.reactor.guice.app")
.addFilter("/", TestFilter.class)
.printError(true)
.crossOrigin(true)
.launch();
}
API 网关模式
ReactorGuiceServer.create()
.bind(host, port)
.setApiGatewayDispatcher(new MyApiGatewayDispatcher())
.addFilter("/", TestFilter.class)
.launch();
Reactor-Guice 聚焦于以下功能
0.0.3 支持注解 @GET @POST @PUT @DELETE @Products @PATH
0.0.3 静态文件支持
0.0.3 支持 Websocket
0.0.4 自定义 uri filter
0.0.5 目录下默认输出 index.html
0.0.5 支持自定义 json lib,自带 Gson 和 Jackson
0.0.5 可以上传文件
0.0.6 POST 支持数组
0.0.7 支持自定义模板,自带 Freemark 和 Thymeleaf
0.0.7 通过 Mono.just("redirect:/example") 支持跳转
0.0.7 修复BUG,已经命名规范
0.0.8 API 网关模式,通过自定义的 Dispatcher 转发请求,可 Filter 过滤
修复头信息重复的 BUG
添加跨域头支持,和 OPTIONS 请求的返回
0.0.9 支持 byte[] 类型输出,便于输出 protobuf
修复跳转的 BUG
默认直接输出返回的 JSON,而不对结果做包装后再输出
0.10 @BeanParam 注解支持将 Form Data , Json 或 Protobuf Data 转换成本地对象
上传文件支持 byte[] ,UploadFile 或 File 类型,File 类型可以指定上传文件保存的目录
0.11 自动扫描 @Controller 并将方法加入到路由,规范符合 Reactor-Netty
自动扫描 @Service 并将其添加到 Guice 的依赖注入中,规范符合 Guice
未来扩展支持
udp server
考虑引入 Jersey
原文
https://www.oschina.net/news/107261/reactor-guice-0-11-released