原子炉-Guiceのマイクロリアクタでは、Google Guiceのフレームワークに基づいたサービスや原子炉、網状であります
ルーティングと注釈の依存性注入による自動設定、または彼のパフォーマンスは、Guiceの、反応器をベースにして、ブートプロセス中に反射の使用のみが、設定を完了するために、あなたのゲートウェイサービスとして彼を使用します。
0.0.3 注册注解 @GET @POST @PUT @DELETE @Products @PATH
支持 Websocket 可作为静态文件服
支持对 URI 做 Filter 处理
0.0.5 静态文件目录后默认输出 index.html
支持自选模板引擎,自带Freemark 和 Thymeleaf 处理类
支持自定义Json引擎,自带 Gson 和jackson 的处理类
添加 ModelMap, 注入到 Controlle 的方法,用户模板的变量代入
可以上传文件了
0.0.8 可以 POST 数组
通过返回 Mono.just("redirect:/...") 实现重定向
支持 API 网关模式
修复头信息错误的 BUG
可选返回跨域头信息
0.10 支持输出 Protobuf
BeanParm 可以支持 Form ,Json 或 Protobuf ,将上传的数据自动组织成对象
上传的文件接受类型 byte[] , UploadFile, File
上传文件可以自动保存到指定的目录
0.11 增加自动扫描 Controlle 类和 Service 类
通过扫描完成路由配置和依赖注入,不同手动做额外配置
0.12.1 静态文件的读取塞入到异步中去处理
这个版本是一个稳定的版本
0.12.2 优化 Jar 内读取文件的变量
简化 websocket 的接口
网关模式增加 websocket
1.反応器Guiceのを紹介
Mavenの
<dependency>
<groupId>com.doopp</groupId>
<artifactId>reactor-guice</artifactId>
<version>0.12.2</version>
</dependency>
Gradleの
compile 'com.doopp:reactor-guice:0.12.2'
2.アプリケーションを作成します。
静的な無効メインパブリック(文字列[] argsが)にIOExceptionが{スロー //読み込みが配置 =プロパティプロパティ新しい新しいプロパティ(); は、Properties.load(新しい新規のFileInputStream(引数[0])); 文字列= Properties.getPropertyホスト(「サーバ。ホスト"); ポート= Integer.valueOf(Properties.getProperty(INT"はserver.portを「)); //サービス開始 ReactorGuiceServer.createを() .bind(ホスト、ポート) .createInjector( // @namesを取得するために使いやすいですコンフィギュレーション バインダー- > Names.bindProperties(バインダー、プロパティ)、 //データベース 新しいMyBatisModule(){ @Overrideは //自定义的配置 保護されたボイドの初期化(){ (JdbcHelper.MySQL)をインストールします。 bindDataSourceProviderType(HikariDataSourceProvider.class)。 bindTransactionFactoryType(JdbcTransactionFactory.class)。 addMapperClasses( "com.doopp.gauss.app.dao"); // addInterceptorClass(PageInterceptor.class)。 } } // Redisの 新しいRedisModule()、 新しいApplicationModule() ) //配置JSON处理类 .setHttpMessageConverter(新新MyGsonHttpMessageConverterは()) //自動的に設定コントローラーおよびサービスパッケージ名をスキャンし、あなたは複数設定することができます .basePackages(「com.doopp.gauss.app」、...) //現在のみをURIを通して濾過サポート、複数回かaddFilter .addFilter( "/"、AppFilter.class) //エラー情報出力 (真の).printError .launch(); }
3.コントローラを作成します。
コントローラの例
@Controller @Path( "/ API /管理者") パブリッククラスExampleController { @GET @Path( "/ JSON") @Produces({MediaType.APPLICATION_JSON}) パブリックモノ<地図<文字列、文字列>> JSON(){ リターンモノ .just(新しいHashMapの<文字列、文字列>()) .MAP(M - > { m.put( "HI"、 "5人の女の子"); 戻りM; }); } @GET @Path( "/ JPEG") @Produces({ "画像/ JPEG"}) パブリックモノ<ByteBuf> JPEG(){ (HttpClient.createを返す) に.get() .uri( "https://static.cnbetacdn.com/article/2019/0402/6398390c491f650.jpg") .responseContent() .aggregate() .MAP(ByteBuf ::保持)。 } }
WebSocketを
@Path( "/ kreactor / WS") @Singleton パブリッククラスWsTestHandleはAbstractWebSocketServerHandle {延び @Override 公共ボイド接続(チャンネルチャネル){ するSystem.out.println(channel.id())。 super.connected(チャンネル)。 } @Override 公共ボイドonTextMessage(TextWebSocketFrameフレーム、チャンネルチャネル){ System.out.printlnは(frame.text())。 super.onTextMessage(フレーム、チャネル) } }
APIゲートウェイモード
ReactorGuiceServer.create() .bind(ホスト、ポート) .setApiGatewayDispatcher(新しいMyApiGatewayDispatcher()) .addFilter( "/"、TestFilter.class) .launch();
混合アピゲートウェイモデル
ReactorGuiceServer.create() .bind(ホスト、ポート) .createInjector(Module1を、モジュール2、...) .setHttpMessageConverter(新しいJacksonHttpMessageConverter()) .setApiGatewayDispatcher(新しいMyApiGatewayDispatcher()) .handlePackages(「com.doopp.reactor.guice .TEST ") .addFilter(" /」、TestFilter.class) .launch();
フォームとファイルのアップロード
//サーバ @POST @Path( "/試験/ポスト豆") 公衆モノ<ユーザー> testPostBean(@BeanParamユーザのユーザ、@FileParam(値= "画像"、パス=「C:\\ユーザー\\ koocyton \ \デスクトップ")[]ファイルファイル){ Mono.just(ユーザー)を返します。 } //クライアントテスト @Test 公共ボイドtestFileUpload(){ 文字列HHE = HttpClient.create() .post() .uri( "http://127.0.0.1:8083/kreactor/test/post-bean") .sendForm ((REQ、フォーム) - > form.multipart(真) .ATTR( "ID"、 "123123121312312") .ATTR( "アカウント"、 "アカウント") .ATTR( "パスワード"、 "パスワード" .FILE( "画像"、新しいFile( "C:\\ユーザー\\ koocyton \\写真\\ cloud.jpg")) .FILE( "画像"、新しいFile( "C:\\ユーザー\\ koocyton \ \写真\\ st.jpg ")) ) .responseSingle((RES、コンテンツ) - >コンテンツ) の.map(byteBuf - > byteBuf.toString(CharsetUtil.UTF_8)) .block(); System.out.println(HHE)。 }
いるProtobuf
@GET @Path( "/試験/いるProtobuf") @Produces( "アプリケーション/ X-いるProtobuf") 公衆モノ<バイト[]> testProtobuf(){ Hello.Builderビルダー= Hello.newBuilder()。 builder.setId(123)。 builder.setName( "夷")。 builder.setEmail( "[email protected]"); Mono.just(builder.build()をtoByteArray()。)を返します。 }