From 7ea75d07d44542a68a43bdd6716b0517d32bd30e Mon Sep 17 00:00:00 2001 From: SoobinHwang <rorngk22@ajou.ac.kr> Date: Mon, 17 Jul 2023 17:20:52 +0900 Subject: [PATCH] code refactoring with service --- .../controller/MyWebController.java | 66 +++--------------- .../myspringweb/service/MusicService.java | 60 ++++++++++++++++ .../controller/MyWebController.class | Bin 3673 -> 1914 bytes .../myspringweb/service/MusicService.class | Bin 0 -> 2879 bytes 4 files changed, 71 insertions(+), 55 deletions(-) create mode 100644 src/main/java/kr/ajousw/myspringweb/service/MusicService.java create mode 100644 target/classes/kr/ajousw/myspringweb/service/MusicService.class diff --git a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java index 2507cfc..961d4c7 100644 --- a/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java +++ b/src/main/java/kr/ajousw/myspringweb/controller/MyWebController.java @@ -5,17 +5,12 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; -import com.fasterxml.jackson.databind.ObjectMapper; - -import jakarta.transaction.Transactional; import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; import kr.ajousw.myspringweb.dto.MusicList; import kr.ajousw.myspringweb.entity.FavoriteMusic; -import kr.ajousw.myspringweb.repository.FavoriteRepository; +import kr.ajousw.myspringweb.service.MusicService; -import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -23,66 +18,27 @@ import org.springframework.web.bind.annotation.GetMapping; @RestController public class MyWebController { - // PathVariable 방식 => localhost/musicSearch/aespa 로 접속 - @GetMapping(value = "/musicSearch/{term}") - public MusicList musicSearchByPath(@PathVariable String term) { - RestTemplate restTemplate = new RestTemplate(); + @Autowired + MusicService service; - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", - String.class); - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); - System.out.println(list.getResultCount()); - return list; - } catch (IOException e) { - System.out.println(e.toString()); - return null; - } + @GetMapping(value = "/musicSearch/{name}") + public MusicList musicSearchByPath(@PathVariable String name) { + return service.searchMusic(name); } - // Query Param 방식 => localhost/musicSearch?term=aespa 로 접속 @GetMapping(value = "/musicSearch") - public MusicList musicSearchByParam(@RequestParam String term) { - RestTemplate restTemplate = new RestTemplate(); - - try { - String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", - String.class); - ObjectMapper mapper = new ObjectMapper(); - MusicList list = mapper.readValue(response, MusicList.class); - System.out.println(list.getResultCount()); - return list; - } catch (IOException e) { - System.out.println(e.toString()); - return null; - } + public MusicList musicSearchByParam(@RequestParam(value = "term") String name) { + return service.searchMusic(name); } - @Autowired - FavoriteRepository albumsRepo; - - // Get Favorite Music list from Database - @GetMapping(value = "/likes") + @GetMapping(value = "/likes") // Get Favorite Music list from Database public List<FavoriteMusic> getLikes() { - try { - return albumsRepo.findAll(); - } catch (Exception e) { - System.out.println(e.toString()); - return null; - } + return service.getLikes(); } @PostMapping(value = "/likes") - @Transactional public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) { - FavoriteMusic music = albumsRepo.save(favorite.toEntity()); - if (music != null) { - return 1; - } - else { - return 0; - } + return service.saveFavorite(favorite); } } diff --git a/src/main/java/kr/ajousw/myspringweb/service/MusicService.java b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java new file mode 100644 index 0000000..322db5d --- /dev/null +++ b/src/main/java/kr/ajousw/myspringweb/service/MusicService.java @@ -0,0 +1,60 @@ +package kr.ajousw.myspringweb.service; + +import java.io.IOException; +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.transaction.Transactional; +import kr.ajousw.myspringweb.dto.FavoriteMusicRequestDto; +import kr.ajousw.myspringweb.dto.MusicList; +import kr.ajousw.myspringweb.entity.FavoriteMusic; +import kr.ajousw.myspringweb.repository.FavoriteRepository; +import lombok.RequiredArgsConstructor; + +@Service +@Transactional +@RequiredArgsConstructor + +public class MusicService { + private final FavoriteRepository albumsRepo; + RestTemplate restTemplate = new RestTemplate(); + + public MusicList searchMusic(String term) { + try { + String response = restTemplate.getForObject("https://itunes.apple.com/search?term=term&entity=album", + String.class); + ObjectMapper mapper = new ObjectMapper(); + MusicList list = mapper.readValue(response, MusicList.class); + System.out.println(list.getResultCount()); + return list; + } catch (IOException e) { + System.out.println(e.toString()); + return null; + } + } + + public List<FavoriteMusic> getLikes() { + try { + return albumsRepo.findAll(); + } catch (Exception e) { + System.out.println(e.toString()); + return null; + } + } + + @Transactional + public int saveFavorite(FavoriteMusicRequestDto favorite) { + FavoriteMusic music = albumsRepo.save(favorite.toEntity()); + if (music != null) { + return 1; + } else { + return 0; + } + } + + +} \ No newline at end of file diff --git a/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class b/target/classes/kr/ajousw/myspringweb/controller/MyWebController.class index e3d46829fac59f27c95f09dfe65d1fa5635e88dd..8447d34a6d78877840bf1a5f5d64ecf42c601844 100644 GIT binary patch delta 668 zcmca9^NUa5)W2Q(7#J9A8LZeDm>3xhCNE?Zn;gX`HPJzWo4q)-s4O!%m61Vb@<w)X z5hz#Rx3oAjIT#|haaJ`WOI~7b>SRf#cu`IUMg}P!237_(E(RF}Id%qFMg}dAk<Qrk z@-WCV2s1Kp7pEo`C1-$5Wn=&w#>gP#la*MOsGpOVm#!aNQk0pOZarCtt%#MSB(*4a z@*K7bE|3knJPhg#8j}~Y*E5<<PGFUsoWLO`F2i8V!(hUo&&a@2oLH9XmROcwlv$EG zIhoUW@?Fm5j3Sd;xg30L8JHND7#J8hwYD%wYHwqZ-oU`Xz{J4Ez`(%9z{tSBAjQDX zz`!5|QN$p?Ajkj$oD2#KiVTblN(>APtc(l_3=9m649b(wbBoujFo-iSFz_%kFfynz zFfxc1GpI3egTt19P4dLsq|Tthz|5ctcB&QwI|Bm)9|I$U2*|qnXa>e&25qpFMhqZV zFfed{JhzQO2i<QfU>kYB{^WrAjgdi*L7#yIZm0psP^g(8kFkS{G-O}^TYw&VMr#;+ gP=iksYz1cUnKGCmg3lD}5pytU0k#<w_Ld9`0D2`}y#N3J literal 3673 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 Y&QJ<Vcje%4s|J%b;LrmV0JRJZ0IQqPmH+?% diff --git a/target/classes/kr/ajousw/myspringweb/service/MusicService.class b/target/classes/kr/ajousw/myspringweb/service/MusicService.class new file mode 100644 index 0000000000000000000000000000000000000000..200877efdc163cb8766ca38b20235cd2f6ee0a11 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 -- GitLab