[회고록] 21.07.11~21.07.18

Namgon·2021년 7월 19일
0

회고

목록 보기
6/8

회고록

부스트캠프 결과가 지난 화요일에 발표됐다. 나름 3테케를 통과해 기대하고 있었는데 탈락이라는 말을 본 순간 멘탈이 흔들렸다. 부스트캠프는 작년부터 도전해서 계속 지원했었고, 이번에도 탈락을 하게되니 마음이 안정되기가 쉽진 않았다. 그만큼 정말로 참여하고 싶었던 교육 프로그램이었고, 이번엔 탈락했지만 다음에 또 도전해 좋은 결과를 얻을 수 있도록 열심히 준비해야겠다.
이제 슬슬 하반기가 다가오고 있다. 이력서와 포트폴리오를 점검하고 잠시 미뤄뒀던 CS 공부를 다시 진행해야겠다. 취업까지 얼마나 오랜시간이 걸릴진 모르겠지만, 준비된 사람에겐 기회가 올 것이고 그 기회를 잡기 위해 최선을 다할 것이다.

멀 배웠는데?

Java 기반 백엔드 프레임워크 Spring의 전반적인 개념에 대해 배웠다.

  • MVC
    • M: model
      사용자가 필요로 하는 데이터들을 관리하고 가공하는 역할을 담당
    • V: view
      사용자에게 보여지는 화면을 담당
    • C: Controller
      데이터(모델)과 사용자 인터페이스(뷰)를 연결하는 다리 역할을 담당
  • Servlet
    사용자의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
  • 웹 상에서 요청에 따른 응답까지의 처리 과정
    1. 사용자가 데이터를 입력하면 URL에 저장되어 요청이 발생
    2. HTTP Request가 호출되어 Servlet Container로 전송
    3. Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성
    4. 사용자가 요청한 URL이 어느 Servlet에 대한 요청인지 탐색
    5. 해당 Servlet에서 서비스 메소드를 호출한 뒤, 사용자의 GET/POST여부에 따라 doGet() or doPost() 호출
    6. GET/POST 메소드는 동적 페이지를 생성한 뒤, HttpServletResponse 객체에 응답을 보냄
    7. 응답 결과는 request 혹은 session에 저장되고, 사용자가 요청했던 view로 전달
      (HttpServletResponse 객체 내 request 혹은 session에 저장된다)
    8. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸
  • Framework
    개발의 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조이자 소프트웨어 개발의 뼈대 역할
    클래스와 라이브러리가 합쳐진 형태
  • 스프링 프레임워크(Spring)
    • Java 기반의 웹 프레임워크
    • POJO(Plain Old Java Object) 방식
      특정 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이, 객체가 경량.
    • 제어 역행(IOC : Inversion of Control)
      외부 라이브러리 코드가 개발자의 코드를 호출. 즉 제어권이 사용자가 아닌 프레임워크에게 있어 필요에 따라 스프링이 사용자의 코드를 호출.
    • 의존성 주입(DI : Dependency Injection)
      구성 컴포넌트 간의 의존관계가 소스코드 내부가 아닌 외부에서 설정을 통해 정의되는 방식. 코드의 재사용성을 높이고 모듈간의 결합도를 낮춤.
    • 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)
      로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리. 스프링에서는 어노테이션을 활용해 반복할당을 줄임.
    • 생명주기 관리
      자바 객체의 생성, 소멸을 직접 관리해 필요한 객체만 사용할 수 있음.
  • Spring Web Layer
    1. Web Layer
      @Controller와 JSP 등의 View 영역
    2. Service Layer
      @Service 영역으로 @Transactional(트랜잭션)이 사용되는 곳
    3. Repository Layer
      데이터베이스와 같은 데이터 저장소에 access(접근)하는 영역. DAO(Data Access Object) 영역
    4. DTO & Domain Model
      계층 간 데이터 교환을 위한 객체인 DTO의 영역.
      도메인 모델은 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화한 것.
      JPA를 사용한다면 @Entity가 사용되는 영역이 Domain Model에 해당한다.
  • File Upload
클라이언트(브라우저)
-> html -> Form -> enctype = "multipart/form-data"
                    method = "post"
                    <input type= "file" />

서버(was)
-> 라이브러리(파일은 참조, 업로드처리)
# 라이브러리가 제공하는 파일을 참조하거나 파라미터를 받는 일을 한다

앞으로의 계획

  • 자바 기반 웹 서비스 개념과 스프링 프레임워크 개념에 대해 공부하기
  • @Component와 @Bean의 차이 공부해보기
  • @Repository @Mapper 공부해보기

TIL

profile
make more services :)

0개의 댓글