Spring 과의 첫 만남 이었다. 주위에서 말로는 많이 들었는데 직접 해보긴 처음이었다.
어렵다 라는 이야기를 많이 들었고 비전공자가 하게 되면 쉽지 않을꺼라는 이야기도 많이 들었다.
그래도 이미 하기로 한 이상 할 수 밖에는 없다.
수업으로는 스파르타코딩클럽 의 "웹 개발의 봄, Spring" 을 들었다.
자세한 개념 설명 보다는 실습 위주의 수업이고 , 개념은 실습을 하면서 따라오는 느낌으로 진행이 됐다.
실습 위주로 가니 역시 돌아가는 모습을 보면서 진행해서 그런가 지겹지 않았고 흥미로웠다.
다만 개념들이 너무 생소하고 낯설어서 내가 제대로 배우고 있는지에 대한 의문들이 자꾸 드는 한 주 였다.
그래도 어느정도 듣고나니 처음에는 강사님이 해주시는 말씀들이 이해가 잘 가지 않았으나 그냥 앉아서 계속해서 꾸준히 듣고 있으니 어느정도 감이 잡히는 듯 했다.
(※파이썬 플라스크로 서버를 돌릴때는 정말 간단했는데 스프링으로 하려니까 동일한 간단한 서버인데도 쉽지 않았다.)
3주 차 과제로 이번에 들은 수업으로 간단한 개인 게시판을 만들어 보는게 나왔다.
항해 첫 주의 과제로 팀으로 미니 프로젝트를 했었는데, 나는 그때 게시판을 만드는 기능을 담당했었고 동일하게 하면 되겠지 라는 생각으로 쉽게 봤는데 쉽지 않았다.
(비슷한 기능을 구현 하는게 이렇게나 다르다니.)
그래도 수업때 사용한 코드들을 뒤적뒤적 하면서 어찌저찌 서버를 만들고 문제가 생기는 부분은 구글링 및 친구 찬스를 사용해가며 완성을 시켰다.
아직은 너무 부족한 부분이 많지만 앞으로 자꾸 공부해나가면서 고쳐나가야 할 것이다.
4주차로는 Spring 주특기 숙련 을 하고 있는데 인강 내용도 장난 아니게 길고 과제가 생각보다 양도 많고 어렵다. 인강 보기에도 시간이 모자른데 과제도 양이 너무 많아서 이걸 다 할 수 있을까 고민에 빠져있다. 할 수 있겠지 ??...
매일 돌아가면서 한분 한분씩 본인의 자료를 발표를 하고 있다.
CS 관련 내용으로 진행을 하고 있으며 부담스럽지 않게 간단한 자료들로 내용을 진행하고 있다.(본격적으로 준비를 하려면 열심히 준비를 해야겠지만 본인 개인 과제 팀 과제를 쳐내면서 CS 까지 완벽하게 준비하기에는 힘든 부분들이 많다. 변명이라면 변명일수도 있겟다.)
나는 네트워크 부분들을 맡아서 조금씩 진행하고 있는데 그래도 아예 모르는 것보다는 조금씩이라도 공부하고 있으니 약간은 만족스러운 스터디다.
이번 주 화요일에 스터디를 처음 진행했는데 스택 부분의 문제를 찝어서 2시간동안 풀었다.
근데 생각보다 문제가 너무 어려워서 2시간동안 잡고 있었지만 풀지 못 했고 풀이법도 이해가 가지 않아서 알고리즘 스터디를 끝내고도 약 2시간 가까이 풀이법을 찾으며 이해를 하려고 노력했다. 너무 어려운 부분을 만나서 그런가 스터디원들 모두 약간 의기소침해진 모습이었다. (난이도를 너무 높게 잡은게 아닌가? 하는 부분에 대해서는 중급 난이도로 나와있어서 풀었던 문제인데 내용은 🤬)
코딩 테스트를 위한 준비인데 처음부터 이렇게 막힐 줄을 몰랐다. 그러면서 내가 아직 얼마나 부족하고 모자른지에 대해서 반성하게 되는 부분이었다.
아직은 갈길이 천만리 정도 남은 것 같다. 매일 매일 열심히 걷고 있는데 이 걸음이 언젠가 끝에 도달하게 될지 아직은 확신이 잘 안선다.
IoC(Inversion of Control) 란 "제어의 역전" 이라는 의미로, 말 그대로 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.
객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.
DI(Dependency Injection) 란 스프링이 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 생성한 객체를 주입 시켜주는 방식이다.
DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다.
스프링에서는 객체를 Bean 이라고 부르며, 프로젝트가 실행될때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행해준다. 그리고 Bean을 모아둔 통을 IoC 컨테이너 라고 부른다.
Spring 프레임워크를 하다보면 프레임워크에 관해서 신기하면서도 어려운 부분들이 자꾸 나오는데 (프레임워크 관련 내용은 그냥 개념을 이해하고 받아들이면 되는데..) 여기에 당연히 안다고 가정하고 나오는 JAVA의 기본 문법들까지 포함이 되니까 코드를 해석하는게 난이도가 약 1.5배가 되는 것 같다.
이번주만 해도 "Optional 객체는 뭐지 ? 분명히 저번에 봤는데..." 라는 생각이 들어서 JAVA의 정석 책을 펴고 다시 공부했다.
처음에 그냥 책만 쭉쭉 읽어나갈때는 이게 어디에 사용되고 왜 배우는지 잘 몰랐던 것들이 어디에 사용되는지 필요한 부분들을 캐치하고 나서 보니까 조금 더 문법이 잘 와닿는 느낌이다.
JAVA 공부를 평소에 한다고 했는데도 아직 모자른 개념이 많고 부족한 부분이 많은 것 같다. 책으로 보긴 본 부분들이 그냥 눈으로만 읽고 머리속에는 기억이 덜 된 것 같다. 평소에도 부족한 부분들을 찾아서 조금씩 자꾸 메꿔줘야겠다.
추가로 공부해야 되는 부분
공부할때 사용한 사이트 들을 공유
너무 설명이 잘 되어 있는 블로그 라서 완전 추천합니다.
https://tansfil.tistory.com/60?category=475681