오늘은 자바 spring 강의 기본을 들을 것이다.
입문을 2회독을 생각했지만, 기본을 진행하는 것이 부족한 부분을 채우기에 좋다고 판단했다.
그리고 자바 문법 강의도 들을 생각이다.
어디까지 진행할 수 있을지는 모르지만, 강의를 다듣고 시간이 남는다면, 이전에한 코드 연습을 해보고 싶다....
spring 기본 1회독 ( 1.5배속 )
역시 입문을 1배속으로 들은 탓인지, 1.5배속도 잘 들으면서 강의를 진행할 수 있었다. 다만, 해당 강의는 이전과 다르게 코드를 같이 치면서 진행을 해보았다.
입문 강의에선 전반적인 흐름을 대충 알고, 코드를 작성하니 더 잘 되는 느낌이였다.( 물론 시간이 배로 걸림 )
어째든 오늘의 키워드는
SOLID , 역할 , 구현 , DI , IoC , 컨테이너 , 다형성 , 구성 구역? , 실행? 구역? , config , ApplicationContext , Bean , Configuration 정도가 생각난다.
강의를 듣고 전반적인 흐름은 SOLID를 지키면서 코드를 짜는 것이 상당히 어려운데, 다형성이라는 java의 특징? 을 베이스로 구현 부분과 역할 부분을 나누어 간섭없이 설계하고, 구현체를 끼워맞춰주는 친구를 두어 이쁜 객체 지향 설계를 할 수 있게 끔 하자!
이때 도와주는 친구가 spring이 그중 하나이고, 코드를 더 이쁘게 작성하도록 도와준다?
흠...
그래도 비슷한 개념을 두번 들으니, 들리는 것이 많아지는 모양이다. 우선 객체지향 설계 5가지 SOLID 는 중요 개념이라 '김영한' 강사님이 말씀을 하셔서, 키워드 뿐 아니라 강의를 들으며, 조금씩 적어두었다.
* 로 중요도 표시!
* 1. SRP 단일 책임 원칙
*** 2. OCP 개방 폐쇄 원칙
- 물론, 스프링 없이도 가능은 하다. 구성만 담당하는 클래스를 만들어주면 된다.
3.ISP 인터페이스 분리 원칙
ps 클라이언트도 결국 인터페이스 같은 것! 난 이렇게 이해함
Q 도입부에서 말한 특정 클라이언트라는 말이 맞지 않는거 같다.
*** 5. DIP 의존관계 역전 원칙
-프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다!
-> 클라이언트가 구현체를 보지말고, 인터페이스만을 보게끔!!
-> 인터페이스(역할)의 구현체(내부 구현체)에 대해 몰라도 되게끔!!
잘못된(위배된) DIP : 클라이언트가 구현 클래스를 선택 - 의존 <- 알고있다.
ps 의존한다 == 알고있다
객체지향의 핵심은 다형성
다만 다형성만으로는 OCP DIP 를 지킬 수 없다!
그래서 먼가가 필요하고! - > 스프링 ( 스프링 외에도 다른 방법이 있다. )
느낀점 - 인터페이스가 중요!
인터페이스를 잘 짜야 후에 다른 클라이언트(사용자) 혹은 서버 가 와도
잘 끼워서 제 역할을 할 수있다!!
ps
해당 강의를 다 듣지도 못했는 데, 하루가 갔다...
계획은 다 이루어지는 않는다.
김영한 님 강의
오늘은 spring 기본을 들었다.
나는 java에서 캡슐화가 제일 중요 포인트인 줄 알았는 데( 사실 캡슐화가 더 머리로 상상하기에 더 괜찮아보였다. 다형성을 맛보기엔 java 문법으로는 한계가 있었던거 같다. ), 또 하나 배워간다.
그리고 하고 싶은 것이 생겼다. 우선 요번에 제출한 키오스크 과제를 spring 으로 만들어보는 것
해야할 것이 많지만, 해당 강의만 수강하고, 요번주는 spring 으로 나만의 과제를 만들어 도전할 것이다.
f2 - 오류난 곳으로 바로 이동
ctrl + shift + t - 현재 선택된 클래스나 메서드와 관련된 테스트 코드 생성 및 이동