From 25f51f6d8c33a82fdacc0b12e400d77a2cc9a54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Wed, 5 Nov 2025 09:45:12 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EC=BB=AC=EC=97=90=EC=84=9C=20GPKI=20?= =?UTF-8?q?=EC=97=86=EC=9D=B4=20=EC=84=9C=EB=B2=84=EA=B5=AC=EB=8F=99?= =?UTF-8?q?=EC=9D=80=20=ED=99=95=EC=9D=B8=EB=90=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/GPKI/certs/SVR4050159001_env.cer | Bin 0 -> 1233 bytes src/GPKI/certs/SVR5640020001_env.cer | Bin 0 -> 1233 bytes src/GPKI/certs/SVR5640020001_env.key | Bin 0 -> 1346 bytes src/GPKI/certs/SVR5640020001_sig.cer | Bin 0 -> 1783 bytes src/GPKI/certs/SVR5640020001_sig.key | Bin 0 -> 754 bytes .../interfaceapp/config/HttpClientConfig.java | 2 -- .../VehicleInterfaceController.java | 23 +++--------------- src/main/resources/application-dev.yml | 16 ++++++------ src/main/resources/application-prd.yml | 16 ++++++------ 9 files changed, 20 insertions(+), 37 deletions(-) create mode 100644 src/GPKI/certs/SVR4050159001_env.cer create mode 100644 src/GPKI/certs/SVR5640020001_env.cer create mode 100644 src/GPKI/certs/SVR5640020001_env.key create mode 100644 src/GPKI/certs/SVR5640020001_sig.cer create mode 100644 src/GPKI/certs/SVR5640020001_sig.key diff --git a/src/GPKI/certs/SVR4050159001_env.cer b/src/GPKI/certs/SVR4050159001_env.cer new file mode 100644 index 0000000000000000000000000000000000000000..4b4d1a5c42c185c207b2ce92f76eb4355cfb2c0e GIT binary patch literal 1233 zcmXqLVmWKj#JqI@GZP~dlSsuqx0ja`4`rUX`(K@hrS|WKy1i`%ylk9WZ60mkc^MhG zSs4rh47m+B*_cCF*o2w9gA8R1q(B@l9%1+Vvecry+|;}hh5R%H@BE_FL_=N!ZjdZD z4~u(%x2K_qfe?tx%){;MXlQI`XaEF;26E!OMkWR(hL#4FMrMXaQ9!Plfw`fjp^2%b zsb!QwEGafh7>Ge^zf#rkp0NW z%D~*j$j<;2=VEGNWMo*q^TDZELI#ITXE^J2&*wX#v+MM4|0`0~Mtsk|YMxqt?fe1f z;(`^464xx`Z~m5(-@WE$>3Y^QWv-XfT>s<#?3z1A=26zAMfn9GZJU+XOX_~=`Dn(! zdOhExIWbc<&zxcP^eEp7AAZ}5=3Nylu1NiSs?2M<+fL}g_4&zub+>spc|Pl(Te0!* zZG*3GH>qDabMDq2F||h-g3XzQU;Z0zk4|Mh)NnaJiu2R4evXc9xA)iZJi3@PWy|MZ zDIuqB8orM(UGUah<8=JSb?0g|-%BxeoH_cyw*KATeF8uBK6jY>Xb&b*2D z^p?cs8b3Lvi(l}%Q>=1YCrI7ty!$ZC=qgMHA}ViDgslv zL1RBip*%}tyFp`%L1W{B`USOZ)j27N1y=g{$*FmIDVarj>G^uuMOMZZmiozgw#h{~ zh6RQx1?HAUMmj(~QsULgFSP}^QzzdROZwMIw)GCOPfjf=$xO>kPAo|cN-fI=(wX^r zKAFWO)=8OpiA9wLW^5eVY>cd|?2L>oS_T>hYB0V5W1Cb)NeRed>1By}=>^%DP?uSN zvJPs_1g2U>hFERw6ZbUI&+fmnUgY(>9+lpe|E%409!+I=vR~st`zg~8vp8fc1LpBG z6P^%V*e>=%@UQT5Pa_hjYo4OR-$XFL^GDP(RoZ_|tZhy87OA zA6GiwKH=@5w54DR^UK&AZG%$xbJnwiS6`OB_?^d5aJeUo>&KVZ4sT8W)^|rrXjlEG z10N>qehye-_9WI~)^%I|3r~3)!ede!yO%mX6+0R6K~%_Gl=H0O@&~Kj+3eo>>vSI% z`uw(Q^~#>aA4RQ6PMwAYdDRy!C0$h4e|**AwNb!%?UXw#|K{gky7PMXYEIva3yW@+ XCMpE-t*M%SY}Z-&6dx}BYju7A1q`vH#M(BAwNyQJHIG3(U8}G8zjrk z!{Q#`?P(}tAOzwv^Kd&m8X6lK8UTTzft)z6p{b#fp&5{EZe$b%H^n>D( z(~FwxY+kZ7Mh7nVcC2ij=-0%(3pO!Z+|NC*XW#ECrG;}ZTwT;!V38lNe)rRCo{s!y zr|V4x-a0C!U;40tk9XT4v8$_Aa$kNed$On4?eWQf-{0wOJbP!#JQdpw`Zc+GIHoYW zzEQHtjI_+XIL&24>7#Wj0y27GG7jvmWj_=)Eo(6BHu;|Sa+T)_g}Vhe)%bR$g#BQ3 zsNC{m*RIFKQ-wdh_oM0fwu zsVgtGf9ZU>&*R^T`*Zge81R9l`577iv#>BTu^52Ufvf@xzX2!_a%we8we>0jQ@KH7 zKS-fGOJlo1V~as!y*GabZ4zf>9Eh@=O%S=uzNexOZ%Lme#`FTE> z#U<8BnR$stl?G;P9NKJ*tgP&ej4WCP8U|`Gz5!#KR7Ob&$YJSaiF)Y;*_lw6S%9(* zYR&|vT1JM>o^>kIf2BQ4-EQ{Ouc6}Aw*9gDa^2JqvNArKw@~Ty#I#kB18I}FR-fG7lgk@kYhM0-!_V_+J&UgM X@A-0zxnl$G<0mKQw`y5ElUD-(>hrq4 literal 0 HcmV?d00001 diff --git a/src/GPKI/certs/SVR5640020001_env.key b/src/GPKI/certs/SVR5640020001_env.key new file mode 100644 index 0000000000000000000000000000000000000000..ee7a77e5cd9c5c8f3aa031ad55e48a306ee507fe GIT binary patch literal 1346 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 literal 0 HcmV?d00001 diff --git a/src/GPKI/certs/SVR5640020001_sig.key b/src/GPKI/certs/SVR5640020001_sig.key new file mode 100644 index 0000000000000000000000000000000000000000..53ae4a75e822aa92e343184beaaafac4fc2c1f4f GIT binary patch literal 754 zcmV&LNQU&4g?4VYs>FhxJ}^# z0t5gs90mv~gBpg7ApsNw5Qw8p1GZU5S8ohY4Du@e5Cnn(pnxo8L?1d2jw+wmcR3W^ z`Qe}cP*}Qp=8wd38SSTnBvGUT8DJ<{I+vpkvcs*C+6#%w+DoT|iB1s%OGJ16?B-;8 zpahhCwxp*LDO-ba?P{|axa>DpBa&UN+!uxqc{!MrvsC;6W1ZWLcs++Xj ze%ix;=>eak)lUOVoHJz7S5ZBY*@*HHW)9$J;Y24-vW`_=ccFJC-?SK)yE=DJxu4zGI;BEiel7(n8FpB0dPovdiOx zv(4w1MGntGnipPR);;MN2EcLhkv&2*s<4a6YoENA+8nMBWaWh!W8HV#rx{ANiDB}e z#nfQ4tz>j?hq0@b27qr1H=FW8b6+(S;~}YJ&FgsF=Y#pscO6z*EYcSy73R#g4dQC= zjok?cO!`UDIjFTZjBeWg<`QZkZ&ny`6GI=RP63#XH`?ZcUa#(^sywIPhk!(SSoz)| z(??j>vxK9`=f~8cUAkGl;BpEp~RXgl{9)nkj^W#^<>Tng+>XAqpV! zgY=#5yfSxP*_v$E|)R_P<7PKN6IXQp^s)RZMn7|S@wZ#?;vzpx*-j{Mz zpKC(}g()DApfZLIn8oC{ze^rCi|pgs*t`sTP z>%z2AN}X*=YbqNosYGZNpowy8)b8^9RZ7I#(2-j2Zq+E%2{lyOP6BTn;woyFU;65q kuNzix-cLN#Y6|tXq(j@BtkV1APaPIcg19sCAWTL7L=8h-=Kufz literal 0 HcmV?d00001 diff --git a/src/main/java/com/vmis/interfaceapp/config/HttpClientConfig.java b/src/main/java/com/vmis/interfaceapp/config/HttpClientConfig.java index 5d24686..a44b1bf 100644 --- a/src/main/java/com/vmis/interfaceapp/config/HttpClientConfig.java +++ b/src/main/java/com/vmis/interfaceapp/config/HttpClientConfig.java @@ -39,8 +39,6 @@ public class HttpClientConfig { HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); return builder .requestFactory(() -> requestFactory) - .setConnectTimeout(Duration.ofMillis(connectTimeout)) - .setReadTimeout(Duration.ofMillis(readTimeout)) .build(); } } diff --git a/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java b/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java index a60b47c..1da1cfd 100644 --- a/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java +++ b/src/main/java/com/vmis/interfaceapp/controller/VehicleInterfaceController.java @@ -9,6 +9,8 @@ import com.vmis.interfaceapp.model.ledger.LedgerResponse; import com.vmis.interfaceapp.service.RequestEnricher; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -46,6 +48,8 @@ import org.springframework.web.bind.annotation.*; */ @RestController @RequestMapping("/api/v1/vehicles") +@RequiredArgsConstructor +@Slf4j @Tag(name = "Vehicle Interfaces", description = "시군구연계 자동차 정보 연계 API") public class VehicleInterfaceController { @@ -68,25 +72,6 @@ public class VehicleInterfaceController { */ private final GovernmentApiClient govClient; - /** - * 생성자를 통한 의존성 주입 - * - *

Spring Framework의 생성자 주입 방식을 사용합니다. - * 이 방식은 다음과 같은 장점을 제공합니다:

- *
    - *
  • 필수 의존성을 명확하게 표현
  • - *
  • 불변성 보장 (final 필드 사용 가능)
  • - *
  • 단위 테스트 시 Mock 객체 주입 용이
  • - *
  • 순환 참조 방지
  • - *
- * - * @param govClient 정부 API와 통신하는 클라이언트 객체 - */ - public VehicleInterfaceController(GovernmentApiClient govClient, RequestEnricher enricher) { - this.govClient = govClient; - this.enricher = enricher; - } - /** * 자동차 기본사항 조회 API * diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 18c5ae7..324dffa 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -18,14 +18,14 @@ vmis: certServerId: "SVR5640020001" targetServerId: "SVR1500000015" ldap: true - gpkiLicPath: "C:/gpki2/gpkisecureweb/conf" - certFilePath: "C:/gpki2/gpkisecureweb/certs" - envCertFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_env.cer" - envPrivateKeyFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_env.key" - envPrivateKeyPasswd: "change-me-dev" - sigCertFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_sig.cer" - sigPrivateKeyFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_sig.key" - sigPrivateKeyPasswd: "change-me-dev" + gpkiLicPath: "src/GPKI/conf" + certFilePath: "src/GPKI/certs" + envCertFilePathName: "src/GPKI/certs/SVR5640020001_env.cer" + envPrivateKeyFilePathName: "src/GPKI/certs/SVR5640020001_env.key" + envPrivateKeyPasswd: "*sbm204221" + sigCertFilePathName: "src/GPKI/certs/SVR5640020001_sig.cer" + sigPrivateKeyFilePathName: "src/GPKI/certs/SVR5640020001_sig.key" + sigPrivateKeyPasswd: "*sbm204221" gov: scheme: "http" host: "10.188.225.94:29001" # 개발(DEV) 행정망 diff --git a/src/main/resources/application-prd.yml b/src/main/resources/application-prd.yml index d771f24..f068437 100644 --- a/src/main/resources/application-prd.yml +++ b/src/main/resources/application-prd.yml @@ -15,14 +15,14 @@ vmis: certServerId: "SVR5640020001" # 운영 인증서 ID로 교체 targetServerId: "SVR1500000015" ldap: true - gpkiLicPath: "C:/gpki2/gpkisecureweb/conf" - certFilePath: "C:/gpki2/gpkisecureweb/certs" - envCertFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_env.cer" - envPrivateKeyFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_env.key" - envPrivateKeyPasswd: "change-me-prd" - sigCertFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_sig.cer" - sigPrivateKeyFilePathName: "C:/gpki2/gpkisecureweb/certs/SVR5640020001_sig.key" - sigPrivateKeyPasswd: "change-me-prd" + gpkiLicPath: "src/GPKI/conf" + certFilePath: "src/GPKI/certs" + envCertFilePathName: "src/GPKI/certs/SVR5640020001_env.cer" + envPrivateKeyFilePathName: "src/GPKI/certs/SVR5640020001_env.key" + envPrivateKeyPasswd: "*sbm204221" + sigCertFilePathName: "src/GPKI/certs/SVR5640020001_sig.cer" + sigPrivateKeyFilePathName: "src/GPKI/certs/SVR5640020001_sig.key" + sigPrivateKeyPasswd: "*sbm204221" gov: scheme: "http" host: "10.188.225.25:29001" # 예시: 운영 행정망 (명세에 맞춰 수정)