入門
これは、メカニズムは、クラスを実行するための静的メソッドを呼び出すためにリフレクションを使用して紹介します。
staticメソッド
パブリック クラスGisUtil { 民間 最終 静的ロガーロガー= LoggerFactory.getLogger(GisUtil。クラス)。 パブリック 静的ExportMethodResultDto gisService1(文字列str){ logger.info( "进入gisService1方法、参数[STR]:" + STR)。 ExportMethodResultDto DTO = 新しいExportMethodResultDto(); LocalDateTimeをCURRENTTIME = LocalDateTime.now()。 DateTimeFormatter DF = DateTimeFormatter.ofPattern( "YYYY-MM-DD HH:MM:SS" )。 dto.setJobId(df.format(CURRENTTIME))。 dto.setOutFilePath("E:\\ DocDirectory \\ test.docを" ); リターンDTO。 } パブリック 静的ExportMethodResultDto gisService2(ExportProjectRasterParamのPARAM){ logger.info( "进入gisService2方法..." )。 logger.info( "参数[PARAM] =" + PARAM)。 ExportMethodResultDto DTO = 新しいExportMethodResultDto(); ストリングUUID = StrUtil.getUUID()。 dto.setJobId(UUID)。 dto.setOutFilePath( "E:\\" + UUID + "\\ srtm_49_02_raster.shp" ); リターンDTO。 } }
コール
文字列str = "test_service_1" 。 クラス <?> threadClazz = Class.forNameの( "com.lgt.demo2.gisService.util.GisUtil" ); 方法メソッド = threadClazz.getMethod( "gisService1"、文字列。クラス)。 ExportMethodResultDto DTO =(ExportMethodResultDto)method.invoke(ヌル、STR)。 logger.info( "gisService1返回:" ); logger.info( "JOBID:" + dto.getJobId()); logger.info( "OutFilePath:" + dto.getOutFilePath()); ExportProjectRasterParamのparam = 新しいExportProjectRasterParam(); param.setCellSize( " param.setResamplingType( "最も近いです" )。 param.setInCoorSystem( "GCS_WGS_1984" ); param.setOutCoorSystem( "GCS_China_Geodetic_Coordinate_System_2000" ); 方法方法2 = threadClazz.getMethod( "gisService2"、ExportProjectRasterParam。クラス)。 ExportMethodResultDto DTO2 =(ExportMethodResultDto)method2.invoke(ヌル、PARAM)。 logger.info( "gisService2返回:" ); logger.info( "JOBID:" + dto2.getJobId()); logger.info( "OutFilePath:" + dto2.getOutFilePath());
出力
14 2019-07-03:51である:INFO 332 08.816 --- [たNiO-EXEC-2から8080 ] com.lgt.demo2.gisService.util.GisUtil:入るgisService1法、パラメータ[STR]:test_service_1 2019-07- 14 03:51である:INFO 332 08.852 --- [たNiO-EXEC-2から8080 ] cldfcontroller.StringController:gisService1を返す: 2019年7月3日14:51である:INFO 332 08.853 --- [たNiO-8080から2-EXEC ] cldfcontroller.StringController:ジョブID:2019年7月3日十四時51分08秒 2019年7月3日14:51である:INFO 332 08.853 --- [たNiO-EXEC-2から8080 ] cldfcontroller.StringController:OutFilePath:E:\ DocDirectory \ Test.docという 2019年7月3日14:51は以下のとおりです。INFO 332 08.853 --- [のNiO-Execの-2から8080 ] com.lgt.demo2.gisService.util.GisUtil:方法は... gisService2を入力します。 2019年7月3日14:51:08.854 INFO 332 --- [NIO-8080-EXEC-2] com.lgt.demo2.gisService.util.GisUtil:参数[PARAM] = [inCoorSystem:GCS_WGS_1984、outCoorSystem:GCS_China_Geodetic_Coordinate_System_2000、 resamplingType:NEAREST、セルサイズ:1 ] 2019年7月3日14:51:08.858 INFO 332 --- [NIO-8080-EXEC-2 ] cldfcontroller.StringController:gisService2返回: 2019年7月3日14:51:08.859 INFO 332 --- [NIO-8080-EXEC-2 ] cldfcontroller.StringController:JOBID:79b4e82ef4564855881ecb4030ba39e2 2019年7月3日14:51:08.859 INFO 332 --- [NIO-8080-EXEC-2] cldfcontroller.StringController:OutFilePath: E:\ 79b4e82ef4564855881ecb4030ba39e2 \ srtm_49_02_raster.shp
エンティティクラスで使用
パブリック クラス ExportMethodResultDto 実装シリアライズ{ プライベート ;列outFilePath // 生成された絶対ファイルパス プライベート文字列JOBID; // GISの非同期サービス応答JOBID呼び出し 公的ストリングgetOutFilePathは(){ 戻りoutFilePathを; } 公共 ボイドsetOutFilePath(文字列outFilePath){ この。 = outFilePath outFilePath; } パブリック文字列getJobId(){ 戻りジョブIDを; } 公共 ボイドsetJobId(文字列JOBID){ この.jobId = JOBID。 } }
パブリック クラス ExportProjectRasterParam 実装シリアライズ{ プライベート文字列inCoorSystem; // 入力座標 プライベート文字列outCoorSystem; // 出力座標系 プライベート文字列resamplingTypeを; // リサンプリングアルゴリズム(オプション) プライベート文字列CELLSIZEを; // セルサイズ(オプション) パブリック文字列getInCoorSystem(){ 戻りinCoorSystemを; } 公共 ボイドsetInCoorSystem(文字列inCoorSystem){ この .inCoorSystem = inCoorSystem; } 公共ストリングgetOutCoorSystem(){ リターンoutCoorSystem。 } 公共 ボイドsetOutCoorSystem(文字列outCoorSystem){ この .outCoorSystem = outCoorSystem。 } パブリック文字列getResamplingType(){ 戻りresamplingTypeと、 } 公共 ボイドsetResamplingType(文字列resamplingType){ この .resamplingType = resamplingType。 } パブリック文字列getCellSize(){ 戻りセルサイズを。 } 公共 ボイドsetCellSize(文字列セルサイズ){ この .cellSize = CELLSIZE。 } パブリック文字列のtoString(){ 戻り String.Formatの( "[inCoorSystem:%sは、outCoorSystem:%sは、resamplingType:%sは、セルサイズ:%のS]"、この .inCoorSystem、この .outCoorSystem、この .resamplingType、これを。セルサイズ); } }