20201222-TIL

나영원·2020년 12월 23일
1

T.I.L.

목록 보기
97/145

오늘 공부할 내용

  • 어제강의
  • 새로운 미니프로젝트진행
  • 저녁 스프링 강의
  • TiL 정리 및 Git & 블로그 업데이트

오늘 공부한 것 & 배운 내용

공부 진행과정

  • 어제부터 새로운 스프링 강의가 시작되서 3주정도 진행 되는데 수업이 있는날과 다음날은 강의 듣고 복습하는 것을 주로 진행하게 될 것 같다
    • 강의 복습은 강의 실습과 같은 내용에 프로젝트를 하나더 생성해서 따로 실습해보고 강사님이 온라인에서 진행하신 수업내용중에 비슷한걸 보고 따라하는 내용이 될 것 같다
      • 기존 온라인 강의가 다른 내용에 실습이라면 따로 프로젝트를 만들어서 해당 내용까지 같이 실습하면 더 도움이 될 것 같다
  • 강의외에는 지금 동료와 지난 미니 프로젝트에서 진행한 자료를 가지고 다시한번 처음부터 프로젝트를 해보고 있는데 그것을 계속 진행하게 될 것 같다
    • 강의 중에 배운내용들을 새롭게 적용해 보면서 진행하면 도움이 많이 될것 같아서 기대가 된다

스프링 심화 강의 복습

  • 수업 내용중 ./gradlew bootrun 하는 것이 진행이 안되서 cmd에서 진행해 봤는데 ./을 빼고 하니 실행이 되었다

    • bash와 cmd는 확실히 실행환경이 다르고 그에따라 명령어도 다른것 같다. 리눅스 명령어를 잘알아야 한다고하셨으니 bash환경에서 어떻게하는지도 확실히 알아놓으면 좋을 것 같다
  • 프로젝트 구조 설명하신 부분 복습하면서 gradle.wrapper에 대해서 설명해주셨는데 궁금해서 추가로 찾아보니 프로젝트가 가지고 있는 그래들 버전을 다른환경에서도 유지시켜주어 배치될수 있게 하는 역할을 하는 것 같다

    • 아직 배치와 실행이 어떤 과정으로 이루어 지는지 잘모르겠다. 이부분도 추가학습하면 좋을 것 같다
  • 실행창에서 TodoApplicatoin 실행하는 것과 TodoApplication 클래스에 와서 main메소드를 실행시키는 것은 똑같이 실행 시키는 것이었다... 뭔가 조삼모사 당한기분이다.

  • 컨트롤러 테스트를 위해서 sample.http를 활용하는 것과 MockMvc를 활용해서 가상 mvc환경에서 테스트하는 내용 모두 굉장히 흥미롭고 대단한것을 배운느낌이었다

    • 이렇게 느낀 이뉴는 프로젝트를 진행하면서 테스트를 하지 않고 코드를 짜는게 얼마나 어려운일인지 느낀것도 한몫을 했고 다른부분들을 테스트를 하지만 컨트롤러 쪽은 직접 화면에 띄워보면서 테스트 하는 수준에서 답답함을 많이 느끼고 있었기 때문에 그렇다

    • 따로 진행하는 프로젝트에서 바로 활용해 볼 생각에 설레었다

    • 강사님이 테스트에 대해서 많이 강조를 하셨는데 실제로 현업에가서 주니어가 가장먼저하게 될 부분이 테스트이기 때문이기도 하고 코딩에 정말 중요한 부분이기 때문이라고 말씀해주셨다

  • 추가로 테스트 어노테이션에 대해서 궁금해서 강사님께 슬랙으로 질문을 드렸고 답변을 받을 수 있었다

    • @WebMvcTest는 @SpringBootTest 어노테이션을 대체하는 것이냐고 질문드렸는데 대체보다는 상속받는 다는 느낌으로 생각하고 추가적으로 MvcMock객체를 생성해주는 역할을 하는 것이라고 생각하라고 해주셨다
    • Junit4에서 @RunWith(SpringRunner.class)라고 표시했던 것은 테스트를 스프링 컨테이너 안에서 진행하겠다는 의미이고 @RunWith(MockitoRunnuer.class)라고 하면 목키토컨테이너 안에서 테스트를 진행할 수 있게 해준다
      • Junit5에서는 @ExtendWith(SpringExtension.class)로 표기법이 바뀌었고 @SprinBottTest 안에 포함이 되어있어 따로 표기하지 않아도 같이 선언된다고 말씀해주셨다
    • 그외에도 ctrl+b 해서 내부 선언내용을 보면서 공부하면 좀더 이해가 빠르게 될것이라고 말씀해주셧는데 따로 검색할 필요없이 바로바로 들어가면서 보면 주석으로 설명도 달려있어서 공부에 도움이 되는 것 같아서 잘활용해야 될 것 같다

블로그 프로젝트

  • Juint4로 진행하던 테스트들을 새로 시작한 강좌에 맞추어서 Juni5로 전환하였다.
  • Blog table에 primaryKey인 seq컬럼에 시작하는 값이 2부터 되서 검색해보았으나 이유를 찾지 못해서 초기 값을 주기 위해서 Blog 클래스에 @SequenceGenerator() 어노테이션을 달아 name과 initvalue를 설정해주었더니 1부터 설정을 시작하였다

    • initvalue=1이 디폴트 값이라 지워주고 실행해보았더니 실행이 잘되어서 다시 @SequnceGenrator어노테이션을 지워주었더니 그래도 동작이 됬다

    • 그래서 seq변수위에 @GeratedValue(genrator = "seq") 라고 이름을 붙여놓은 것 까지 지우고 실행했더니 다시 2부터 생성이 되었다

      • 결론적으론 GeratedValue에 genrator 속성으로 이름만 붙여주면 다시 default값이 적용된다는 것은 알았지만 실제로 어떤 원리에 의해서 이게 작동하는지는 잘모르겠다..
  • Blog와 Member는 1:1관계로 매핑되어있기 때문에 하나의 member가 여러개의 블로그에 들어갈수 없게 자동으로 설정되는 것 같다. 굉장히 똑똑하다

    • 멤버도 함게 반복문에 넣어주어 같은수로 생성해서 1:1로 대입해주었더니 해결되었다
  • Blog에 Member가 꼭들어와야될것 같아서 @Column(nullable=false)를 선언해주었는데 OneToOne mapping되어있는 곳에서는 @Column 어노테이션을 사용하지 못한다고 한다.

    • 입력받는 부분에서 null이 없도록 설정해주어야 될 것 같다
  • 현재 테스트할 때 DB를 create로 해놓고 테스트 돌릴때마다 새로운 DB에서 테스트하고 있는데 이게 좋은 방법인지 아니면 테스트 자료들을 입력해놓는게 좋은 방법인지 잘모르겠다. 나중에 테스트 수업 할때 잘들어봐야될것같다
  • 블로그를 Member_id로 검색하고 싶었는데 Meber객체에서 id를 어떻게 찾아주나 고민하다가 그냥 findBlogByMember_Id()메서드를 만들어서 테스트돌려보았는데 작동을 한다.. 굉장히 똑똑해서 감탄이나온다
  • 테스트케이스를 하나 추가하면 해당 테스트를 통과시키고 전체테스트를 다시돌려보면 에러가 발생한다.. 그만큼 테스트를 독립적으로 설계를 못하고 있다는 반증이겠지.. 연습이 많이되고 있는데 한편으로는 지치는 작업이다

내일 공부할 내용

  • 어제 스프링강의 복습
  • 저녁 스프링강의
  • TiL 정리 및 Git & 블로그 업데이트
profile
배우는 개발 일기

0개의 댓글