보라코딩

[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 본문

코딩/Spring

[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

new 보라 2023. 3. 5. 22:15

두달반 전에 자바의 정석을 끝내고

스프링 배워봐야지라는 생각에

바로 인프런 김영한님의 스프링 강의를 바로 들으려고 했었다.

 

 

그런데 그땐 DB도 배우지 않은 상태였고

하나도 이해가 되지 않았다...

 

 

지금은 이것저것 스프링 책도 보고 유튜브도 보고

어느정도 감을 잡고 다시 강의를 들었더니

이해가 되니 재밌게 느껴졌다...!

 

 

일단 무료강의 먼저 다 듣고

유료강의는 고민해봐야겠다 :)

 

 

 

 


 

domain 패키지를 만들어서 안에 Member 클래스를 생성했다.

id와 name만을 담을 수 있게 변수 설정 및 getter, setter 만들었다.

 

 

 

 

repository 패키지를 생성해서

MemberRepositoy라는 인터페이스를 생성했다.

 

 

 

 

그 인터페이스를 구현하는

MemoryMemberRepository를 만들었고

각각 메서드를 구현했다.

 

map을 사용해서 

id는 자동생성되게 하였고

name은 직접 넣게 만들었다.

 

 

 

 

 

그리고 테스트를 진행했는데

꼭 요 map을 clear 하게 해주어야했다,

그렇지 않으면 여러개의 테스트 진행 시 문제가 생긴다. (중복 등으로 인해)

 

 

 

 

@AfterEach는

테스트 하나 끝날때마다 이 동작이 호출되게 한다.

 

 

 

 

 

테스트는 이렇게 구현했다.

익숙하지 않지만 스트림도 배울 수 있었다.

 

 

 

 

 

 

 

다음엔

Service 패키지를 만들어서

MemberService 클래스를 만들었다.

 

 

요 서비스에서 사용하는 용어들은 

비지니스 용어를 사용해주어야 한다.

 

 

 

 

 

테스트를 한번에 만들 수 있는 단축키가 있었다.

 

 

 

 

 

이번에도 테스트 코드를 만들어주었고

항상 올바른 테스트 코드만 만드는 것이 아닌

오류가 났을때도 확인을 해줘야한다.

 

 

 

 

 

테스트 이름은 한글로 써도 된다고 한다.

 

 

 

try catch보단

아래 코드가 더 좋다고 한다.

 

 

 

 

 

계속 객체를 생성해줄 필요가 없어서

DI를 사용했다.

외부에서 넣어주는 것을 dependency injectioin이라고 한다.

 

 

 

 

@beforeEach를 사용해줘서

실행되기 전에 객체를 생성할 수 있게 해주었다.

 

 

 

 

 

서비스, 리파지토리, 콘트롤러에 각각

annotation을 적용했다.

 

 

 

 

스프링 빈을 등록하는 두가지 방법에 대해 모두 알아야 한다고 한다.

 

 

 

 


 

코드를 실행하려는데

포트가 겹쳐서 포트를 변경해주었다.

 

 

 

 

 

 

 

홈콘트롤러를 생성했다.

http://localhost:8081/

으로 들어가면 바로 홈으로 들어가진다.

GetMapping("/")이기 때문

 

 

 

 

http://localhost:8081/ 

로 들어가면 return "home"인데

그래서 home.html 파일을 만들어줬고

여기로 이동하게된다.

 

 

 

바로 아래와 같은 화면이다.

a 로 링크를 걸어줘서

회원가입을 누르면

/members/new로 이동한다.

 

 

 

 

/members/new

관련 내용은 멤버콘트롤러에 만들어주었다.

 

 

<매우 중요>

GetMapping을 쓰면 그 주소로 들어갔을때 들어오게 이동하고

PostMapping을 쓰면 form에서 Post 방식으로 이동하게 된다.!!!!

 

 

 

 

 

 

 

 

 

여기서 주목할 점은

form에서 input의 name이다.

name을 name으로 설정해놓았고

 

 

 

그럼 MemberForm의 name으로 들어가게 된다(setName 통해서)

 

 

 

 

그럼 다시 form.getName으로 form을 통해 전달된 name을 받을 수 있고

이를 통해 join 으로 회원가입 시킨다.

 

다시 전환되는 화면은 redirect 통해서 home 화면으로 ("/")  이동하게 된다.