spring data jpa 간단한 튜토리얼라한사 아github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu SonWritten By 정문철
Reviewed By 손영수
Mac에서 Flask로 Restful API 서버를 간단히 만드는 방법입니다
Android Basic 4일차 전에 진행되어야 하는 실습입니다.
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu SonWritten By 정문철
Reviewed By 손영수
Mac에서 Flask로 Restful API 서버를 간단히 만드는 방법입니다
Android Basic 4일차 전에 진행되어야 하는 실습입니다.
2. 1. 작성자 소개 2
-------------------------------------------------------------------
평소 정리를 즐겨합니다. 핚 때 동영상강좌도
맊들다보니.. 비실명과 맊화캐릭터를 쓰네요
양해 부탁드립니다 ㅎㅎ
3. 지난 시간에.. 3
• 지난 슬라이드에 Generic Autowired 를
이용핚 공통 삭제 코드를 보였습니다 ‘ㅁ’;;
• 에.. 그러니까, 공통으로 삭제되는 아이템들을
하나의 클래스에 요청주소에 따라서 switch 로
처리하게 몰아넣은 것들을 , generic 리스트로
받아서 맵으로 펴서(?) 처리했습니다.
7. 자 그럼 테스트 코드는.. 7
• 제가 테스트 맹이다보니,
테스트 좀 공부해볼라고 테스트 스터디를 두개나
들었답니다. (하나가 slipp 스터디이고 다른 하나가 hika Maeng
님이 주최하싞 s66 스터디 인데 요새 흐름을 좀 놓쳐서 죄송하네요
ㅠ)
• 아무튼 테스트 스터디를 들었으니 테스트 코드를
짜봅니다.
8. 테스트 코드에 사용핛 mock을 맊들어보자. 8
• Controller에서 Concrete Class를 사용하던 것에서 다음과
같은 CommonDeleteService 목록을 autowired 하니,
테스트시에 사용핛 Mock Service코드를 다음과 같이
적어줬습니다.
9. 아아 초록불이 들어온다 ! 9
• 컨트롤러를 new를 해서 맊들고 Autowired가 되는 setter에
목서비스를 넣어주고 테스트를 해봅니다. 아아 초록불입니다. 스터디때
받은 조언대로 서비스를 두개 넣어줘봅니다.
10. 자, 그럼 다른 이야기를 해볼까요 10
• 흠.. 뭐.. 스프링에 의존적이지 않게 좀 짜고
싶었는데 뭐..암튼~~ 아직 초심자다보니
mockito 같은 테스트 프레임워크에 대핚 학습이
모자릅니다.
• 본롞 이야기를 해보자면
에..사건의 발단은 친구도와주기 개발이었습니다
-_-
• 우선 화면을 잠깐 보실까요
11. 중복해서 나타나는 기능들에 대핚 고찰 11
• 어떤 주말에는 제품을, 어떤 주말에는
카테고리정보를 맊들다보니 비슷핚 기능이
늘어나게 되었습니다.
12. 인간의 욕심은 끝이 없고… 12
• 인간의 욕심은 끝이 없고,
중복코드는 양산된다?
13. 복붙도 핚계가 있다. 13
• 어드민 폼 컨트롤러에서는 공통적으로 목록, 생성, 수정의 흐름이
나타났습니다. (삭제는 공통삭제로 빠짐)
아이템유저
14. 복붙도 고생이다. 14
• 눈감고도 보지않고도 10번정도 패턴을
코딩해야핚다는 조언(?)에 따라, 복붙패턴으로
가거나, 이미 짜져 있는 소스참조패턴(?)하면서
따라치기패턴을 사용합니다(....)
• 열심히 코딩하여 스프링 4.3 부터 나온 최싞
@GetMapping, @PostMapping을 했단 말야!
하지맊 현실은 복붙패턴 ㅠ 우울합니다. 바꿔보고
싶습니다.
17. 17
• 우선 어떤 도메인(T)에 관핚 컨트롤러인지 어떤
서비스를 사용핛 것인지 CommonService<T>
에 (이름 나중에 바꿀게요;;) 정의하여서
생성자로 받았습니다.. 또 추상화 핛 것이 view
페이지 리턴 정책이었습니다.
18. 18
• 유저관련이라면 다음과 같은 통일된 뷰 페이지
정책을 맊들어주고, String typeName으로 받아서
공통컨트롤러에서 페이지 이름들을 맊들어주도록
해봅니다..
(공통된 정책이 싫다면 구현클래스에서 직접
정의하는 것도…음)
• Ex)
views/user/list
views/user/createUser
views/user/updateUser
19. 최종 결과 컨트롤러 19
• 최종 결과 : 컨트롤러는 무척 짧게 나타날 수 있었다.!!
• 서비스는 여기로 젂달.. ㅎ
22. 하다보니 느낀점 22
• 다국어 페이지가 들어가다보니 컨트롤러에 쿠키나
Locale정보를 얻어오는 부붂이 있었다. 서비스
영역에서 LocaleResolver를 주입받아서 거기서
정보를 얻어올 수도 있었는데 괜히 컨트롤러
파라미터로 처리핚 것같다… 그래서 제너릭
컨트롤러에 적용하자니 리팩토링이 다시 필요 ㅠㅠ
• 하다보니 옆에서 짝 프로그래밍해주시던 붂께
질문받은 건데, 생성 폼 페이지와 업데이트 폼
페이지를 같이 가져가는 것은 …?
• 졸려서 이맊 자야겠네요-_ㅠ