package Ġdev . boilerplate . gab ri elt ay . micro service . service Ċ Ċ import Ġorg . springframework . boot . web . client . Rest Template Builder Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġorg . springframework . http . Http Entity Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġdev . boilerplate . gab ri elt ay . micro service . controller . dto . Ext User DTO Ċ import Ġdev . boilerplate . gab ri elt ay . micro service . controller . dto . Ext Users DTO Ċ import Ġdev . boilerplate . gab ri elt ay . micro service . model . User Ċ import Ġdev . boilerplate . gab ri elt ay . micro service . repository . UserRepository Ċ Ċ @ Service Ċ class ĠUserService ( private Ġval Ġuser Repository : ĠUser Repository ) Ġ{ ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġsave ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Repository . save ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind ( userId : ĠLong ): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Repository . findById OrNull ( userId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( userId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Repository . delete ById ( userId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget External (): ĠExt Users DTO ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCan Ġmake Ġrest Template Ġas Ġa Ġbean Ġinstance ĊĠĠĠĠĠĠĠ Ġval Ġrest Template : ĠRest Template Ġ= ĠRest Template Builder (). build () ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// json placeholder . typ icode . com / posts " ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġheaders . contentType Ġ= ĠMediaType . APPLICATION _ JSON ĊĠĠĠĠĠĠĠ Ġheaders . set Basic Auth (" user ", Ġ" pass ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( url , ĠHttpMethod . GET , ĠHttp Entity < String >( headers ), ĠExt Users DTO :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost External (): ĠExt User DTO ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCan Ġmake Ġrest Template Ġas Ġa Ġbean Ġinstance ĊĠĠĠĠĠĠĠ Ġval Ġrest Template : ĠRest Template Ġ= ĠRest Template Builder (). build () ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// json placeholder . typ icode . com / posts " ĊĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= ĠHttp Headers () ĊĠĠĠĠĠĠĠ Ġheaders . contentType Ġ= ĠMediaType . APPLICATION _ JSON _ UTF 8 ĊĠĠĠĠĠĠĠ Ġheaders . set Bearer Auth (" token Ġstring ") ĊĊĠĠĠĠĠĠĠ Ġval Ġext User DTO Ġ= ĠExt User DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġ" bar ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity ( ext User DTO , Ġheaders ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExt User DTO :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body ĊĠĠĠ Ġ} Ċ } Ċ