マイクロサービス炉-Guiceのフレームワーク0.12.2リリース、ゲートウェイモードのサポート用WebSocket

原子炉-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()。)を返します。
}

おすすめ

転載: www.oschina.net/news/107494/react-guice-0-12-2-released