Spring 개발 교육
ApexSoft
Day 2 - Test, Git, SpringBoot
Day 1 - Review
퇴근을 빨리 하자
Day 1 - Review
퇴근을 빨리 하자
간접화
객체에게 데이터를 요구하지 말고
작업을 요청하라
목 차
1. Test
2. Git
3. Initial SpringBoot
Test
퇴근은 빨리 했는데
문제 생겨서 연락 받고
원격으로 일하면 행복할까?
Test
퇴근은 빨리 했는데
문제 생겨서 연락 받고
원격으로 일하면 행복할까?
발 뻗고 쉬려면 Test
Test
단위 테스트
통합 테스트
인수 테스트
Test
단위 테스트: 단위 로직
통합 테스트: 컴포넌트 간 연동
인수 테스트: 실제 사용자 환경
Test
단위 테스트: JUnit
통합 테스트: SpringMVCTest
인수 테스트: Selenium(Selenide)
Test - 실습
JUnit 실행 및 확인
자동 생성된 Library, LibraryTest 활용
동영상: https://youtu.be/kEF0vK8y8fk
Gradle 테스트 실행 및 확인
동영상: https://youtu.be/M-Pn_ipy29k
Git Commit
.gitignore 편집
.idea, .gradle, build/ 추가
Library, LibraryTest 삭제
git add .
Git Commit
git cim '50자 이내 제목
빈 행
본문 72자 넘으면 줄 바꿈
어떻게 보다는 무엇과 왜를 설명'
https://github.com/weirdmeetup/translate/blob/master/articles/2014-08-31-git-commit.md#훌륭한-git-커밋-메시지의-일곱-가지-규칙
Git Commit & Push
git cim 'Dev ready
.gitignore 정비
불필요한 파일 삭제'
그래프 확인 (master 브랜치 전진)
git psom (git push origin master)
Git Merge

Git Merge


Git Merge


(master 브랜치 상에서) git merge feature
Merge comit(C5)이 추가되면서 합쳐짐
Git Rebase

Git Rebase


Git Rebase


원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)
Git Rebase


원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)
(feature 브랜치에서) git rebase master
Git Rebase


원래 베이스는 C2 였지만, C9'으로 베이스를 다시 지정(rebase)
C3, C4, C10 커밋이 사라지고, C3', C4', C10'이 새로 생겨남
Git 실습 - merge
master 브랜치에서 git co -b 'subtract' (git co는 git commit의 alias)
src/main/java/day02 패키지 생성
Algebra에
public int subtract (int a, int b) {} 구현
src/test/java/day02 패키지 생성
day02.AlgebraTest 클래스 생성
AlgebraTest에
@Test public int subtractTest() {} 구현
Git 실습 - merge
Test 통과하면
git add .
git cim 'subtract에서 뺄셈 추가' (git cim은 git commit -m 의 alias)
그래프 확인 (subtract 브랜치 전진)
git co master
git merge subtract
그래프 확인 (master에 merge commit 이 생기면서 subtract와 합쳐지고 subtract 보다 하나 더 전진)
git psom
git branch -d subtract (subtract 브랜치 삭제)
Git 실습 - merge
master 브랜치에서
subtract(int a, int b) 를 subtract(int c, int d)로 수정
git add .
git cim 'master에서 뺄셈 파라미터 c, d로 변경'
그래프 확인 (master 브랜치 전진)
github의 master 브랜치에서 subtract(int m, int n) 수정
커밋 메시지: 깃허브에서 뺄셈 m, n으로 변경 입력 후 commit 클릭
Git 실습 - merge
git fom (git fetch origin master의 alias)
그래프 확인 (master와 origin/master가 나뉘어져 있고, origin/master가 하나 앞섬)
git merge origin/master
[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]
(git st로 확인해보고 빨간색 있으면) git add .
git commit
그래프 확인 (master에 merge commit 이 추가되면서 합쳐지고,
master가 origin/master 보다 하나 앞섬)
git psom
Git 실습 - rebase
master 브랜치에서 git co -b 'add'
Algebra에
public int add(int a, int b) { return a + b; } 구현
AlgebraTest에
@Test public void addTest() { ... } 구현
Git 실습 - rebase
Test 통과하면
git add .
git cim 'add에서 덧셈 추가'
그래프 확인 (add 브랜치 전진)
git co master
master 브랜치의 Algebra에서
public int add(int c, int d) { return c + d; } 작성
git ciam 'master에서 덧셈 추가 c, d' (git ciam == git add . + git cim)
그래프 확인 (master가 add와 나뉘어져서 전진)
Git 실습 - rebase
git co add (add 브랜치로 이동, 노란 태그(HEAD)가 add 브랜치로 이동)
git rebase master (add 브랜치의 base를 master로 재(re)지정)
[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]
(git st로 확인해보고 빨간색 있으면) git add .
git rb --continue
그래프 확인 (꺾임 없이 하나의 선 상에서 add가 master보다 하나 앞섬)
git co master 한 후 git merge add
그래프 확인 (master가 동일선 상에서 add보다 하나 뒤에 있었으므로, 별도의 merge commit이 생기지 않고 master가 add의 위치로 이동)
git psom 한 후 git branch -d add
Git 실습 - rebase
master 브랜치의 Algebra에서 add(int x, int y)로 수정
git ciam '덧셈 x, y 로 변경'
github의 master에서 add(int m, int n)로 수정 후
커밋 메시지: 깃허브에서 덧셈 파라미터 m, n 으로 수정
commit 클릭
Git 실습 - rebase
git fom
그래프 확인 (master와 origin/master가 나뉘어져 있고, origin/master가 하나 앞섬)
git rebase origin/master (master 브랜치의 base를 origin/master로 재(re)지정)
[충돌 해소 - IntelliJ > 충돌 파일 우클릭 > Git > Resolve Conflict..]
(git st로 확인해보고 빨간색 있으면) git add .
git rb --continue
그래프 확인 (같은 선 상에서 master가 origin/master보다 하나 앞섬)
git psom
Git Merge vs Rebase
merge는 새로운 merge commit 한 개만 새로 생성하면서 병합
feature 브랜치 상에서의 commit이 그대로 남으므로
feature 브랜치의 꺾임선이 그대로 남음
Git Merge vs Rebase
merge는 새로운 merge commit 한 개만 새로 생성하면서 병합
feature 브랜치 상에서의 commit이 그대로 남으므로
feature 브랜치의 꺾임선이 그대로 남음
rebase는 feature 브랜치 상에 있던 모든 commit을 없애고
master 브랜치 상에 새로 생성
feature 브랜치 상에서의 commit이 모두 소멸되므로
feature 브랜치의 꺾임선도 사라지고 master 만 남음
Git Merge vs Rebase
merge는 새로운 merge commit 한 개만 새로 생성하면서 병합
feature 브랜치 상에서의 commit이 그대로 남으므로
feature 브랜치의 꺾임선이 그대로 남음
rebase는 feature 브랜치 상에 있던 모든 commit을 없애고
master 브랜치 상에 새로 생성
feature 브랜치 상에서의 commit이 모두 소멸되므로
feature 브랜치의 꺾임선도 사라지고 master 만 남음
시각적으로 깔끔한 브랜치 유지를 위해 Rebase를 선호
Git Merge vs Rebase
merge vs rebase 필독 한글 자료
http://dogfeet.github.io/articles/2012/git-merge-rebase.html
Rebase 주의 사항
https://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview
영어지만 그림과 사례가 더 간단함
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-Rebase-%ED%95%98%EA%B8%B0#Rebase-의-위험성
git push로 외부로 보낸 커밋이 있는 브랜치 상에서
git rebase '다른브랜치' 금지
Git 간단 WorkFlow
master 브랜치 하나로만 rebase로 작업
소스 작업
git add .
git cim '어쩌구'
git fom (git fetch origin master)
git rbom (git rebase origin/master)
[충돌 시 해소] - git add . - git rb --continue
git psom (git push origin master)
Git WorkFlow
복잡하고 체계적으로 가려면
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
Initial SpringBoot
Spring Initialzr로 프로젝트 생성
기본 컴포넌트 선택
Gradle 프로젝트 import
Spring Application 실행
Initial SpringBoot
Day 2 End
Q&A
Day 3
Hello SpringBoot
SpringBoot 환경 설정
Logging, Debugging
도메인, 서비스, 컨트롤러
Spring 개발 순서
Springboot-dev-primer-apexsoft-02
By Myung Woon, Oh
Springboot-dev-primer-apexsoft-02
스프링 웹 개발 기초 교육 - day 2
- 817