개발공부 & 부트캠프/[부트캠프] 회고

[데이터 엔지니어링 부트캠프]8월 2주차 회고

포리셔 2023. 8. 14. 10:53

좋았던 점

  • 파이썬과는 차이가 많은 자바를 처음 접하다보니 객체지향으로 넘어가더라도 차이가 상당히 많은데 거기에 필요한 부분을 정석에 가깝게, 또 자세하게 알려주셨습니다. 이해가 어려운 부분들에 대해서는 pdf 파일과 예제 파일 시현까지 해주시면서 설명해주셔서 그래도 짧은 기간이나마 잘 따라갈 수 있었습니다.
  • 막판에 다음 교육 과정엔 스프링 부트에 대비해서 스프링 IoC도 간단하게 알려주신 것은 좋았습니다. 이게 득이 될 지 아니면 그냥 덤이 될 지는 까봐야 알겠지만...

아쉬웠던 점

  • 아무리 설명을 자세하게 해주신다고 한들, 자바를 2주일 조금 안 되는 기간에 다 배우게 하는 것이 벅찼습니다. 혹자에 따르면 2주만에 자바를 다 이해했다고 하면 회사에서 이 놈은 뭐지 하는 생각에 면접은 보러 오라고 할 것이라고...
  • 돌이켜보면 지나치게 정석적이지 않았나 하는 생각도 듭니다. 추후에 하둡을 배우면서 필요하니까 배운다고는 하는데, 파이썬을 주력으로 썼던 입장에서, 더군다나 머신러닝과 딥러닝을 파이썬으로 해내던 입장에서 자바까지 곁다리를 펼치기가 다소 힘에 부쳤다는 느낌도 듭니다. 또 모르겠습니다. 나중에 다른 강사님들이 어떤 부분에 중점을 두고 강의를 하실지. 그건 다음 커리큘럼에 들어오실 강사님들의 말씀도 들어보고 결정할 문제인 듯 하니까 일단 넘어가도록 하죠.

배운 점

자바 객체지향 프로그래밍

  • 생성자(generator): 생성자는 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드입니다. 인스턴스 변수를 초기화하거나 인스턴스를 최초 생성할 때 수행할 작업에 사용합니다. 몇 가지 조건을 제외하면 다른 메서드와 거의 동일합니다. 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 합니다.
    • 생성자의 조건: 파이썬에서 생성자는 init()으로 이름이 고정되어 있지만, 자바에서는 생성자의 이름과 클래스의 이름이 같아야 합니다. 또한 생성자는 리턴값이 없지만 다른 메서드와는 달리 이름 앞에 void를 붙이지 않습니다.
    • 기본 생성자(default constructor): 매개변수가 없는 생성자를 뜻합니다. 기본적으로 클래스에 생성자가 하나도 없으면 자바 컴파일러가 기본 생성자를 추가해줍니다. 그러나 보통은 입력 인수가 아무 것도 없을 경우에 참조변수를 어떻게 초기화할지를 지정해주는 용도로 기본 생성자를 따로 만들어 놓습니다.
    • this() 메서드 - 생성자에서 같은 클래스의 다른 생성자를 호출할 때 사용합니다.
    • 참조변수 this: this는 인스턴스 자신을 가리키는 참조변수입니다. 인스턴스의 메모리 상 주소가 저장되어 있고, 모든 인스턴스 메서드에는 지역 변수로 숨겨진 채로 존재합니다.

스프링 IoC 기초

  • 선언적 프로그래밍 - XML 문서로 원하는 사양을 설정하여 프로그램에 반영합니다. 아나콘다 가상 환경을 export 할 때 JSON 파일로 가상환경 정보를 담을 수 있는데 그것과도 비슷하게 느껴지네요. 이클립스 상에서는 프로젝트를 생성한 후 우클릭해서 Convert> Convert to Maven project를 클릭해 전환한 후에 설치할 파일을 pom.xml 문서의 <dependencies> 태그에 담아서 저장합니다.
  • Spring IoC (제어의 역행): 필요한 API의 객체 생성 또는 사용자가 정의한 클래스의 객체 생성을 프로그램 안에서 직접 처리하지 않고, 객체 생성을 외부에서 진행하여 주입하는 방식입니다.
  • 스프링 프레임워크: 자바 기반의 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공합니다.
    제어 역전을 특징으로 하는 스프링은 기존 자바 개발 방식과 다르게 동작합니다. IoC를 적용한 환경에서는 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 스프링 컨테이너에 오롯이 위임합니다. 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며, 제어 역전을 통해 의존성 주입(DI), 관점지향 프로그래밍(AOP) 등이 가능해집니다. 이런 제어 역전을 통해 제어권을 컨테이너에 넘김으로써 개발자는 비즈니스 로직을 작성하는데 더 집중할 수 있습니다.
    • 의존성 주입(Dependecy Injection, DI): 제어 역전 방법 중 하나로써 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식입니다.
      생성자를 통한 의존성 주입, 필드 객체 선언을 통한 의존성 주입, setter 메서드를 통한 의존성 주입이 가능합니다.
      스프링에서는 @Autowired라는 어노테이션(annotation)을 통해 의존성을 주입할 수 있는데, 스프링 4.3 이후 버전에서는 생성자를 통한 의존성 주입에서는 어노테이션의 생략이 가능합니다.

앞으로 바라는 점

  • 자격증 시험이 다음 주로 다가오면서 시간 분배가 더욱 중요해진 시기입니다. 자바는 버려...야 하나??? 스프링 들어보고 결정하겠습니다.