본문 바로가기

전체 글

(70)
Spring MVC 먼저 MVC 패턴에 대해 알아보자. MVC 패턴 MVC는 Model, View, Controller의 약자로 하나의 애플리케이션의 구성 요소를 세 가지의 역할로 구분한 개발 방법론이다. [MVC 패턴] Model Model은 애플리케이션의 정보, 데이터를 나타낸다. Model은 DB의 역할과 같이 사용자가 필요한 데이터를 가지고 있다. 비즈니스 로직을 처리한 후 Model의 변경사항을 Controller와 View에 전달한다. View View는 사용자에게 무엇을 보여주기 위한 역할을 수행한다. Model에게 전달 받은 데이터를 화면에 표시해준다. Controller Controller는 사용자의 요구사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 요구하고 데이터를 View에 반영한다. MVC ..
TCP 3-way handshake & 4-way handshake TCP 연결을 성립하고 해제하는 과정을 알아본다. 3-way handshake (연결 성립, Conntection Establishment) TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기 전에 논리적인 접속을 성립하기 위해 3-way handshake 과정을 진행한다. [3-way handshake 과정] 1. 클라이언트가 서버에 접속을 요청하는 SYN(M) 패킷을 보낸다. 2. 서버는 클라이언트의 요청인 SYN(M)을 받고 클라이언트에게 요청을 수락한다는 ACK(M+1)와 SYN(N) 패킷을 보낸다. 3. 클라이언트는 서버의 수락 응답인 ACK(M+1)와 SYN(N) 패킷을 받고, ACK(N+1)을 서버로 보내면 연결이 성립된다. 4-way handshake (연결 해제, Connection ..
스프링 빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션의 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자. 스프링 빈은 다음과 같은 생명주기를 가진다. 빈의 생명주기 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 컨테이너 종료 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원한다. 1. 인터페이스 InitializingBean, DisposableBean 첫 번째는 InitializingBean 인터페이스와 DisposalBean 인터페이스를 상속..
OSI 7계층 OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7개의 계층으로 나눈 것이다. 이렇게 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있고, 문제가 발생하면 문제가 발생한 해당 단계만 수정할 수 있기 때문이다. 이제 각 계층별로 알아보자. 1계층 - 물리 계층 (Physical Layer) 물리 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용하여 통신 케이블로 데이터를 전송하게 된다. 이 계층에서 사용되는 통신 단위는 비트이며, 이는 0과 1로 나타나며 전지적으로 On, Off 상태이다. 물리 계층에서는 단지 데이터를 전송하는 역할만 하며, 데이터가 무엇인지, 어떤 에러가 있는지 등은 전혀 신경쓰지 않는다. 리피터, 케이블, 허브 등 2계층 - 데이터링크 계층 (DataLink Laye..
스프링 컨테이너, 스프링 빈, 싱글톤 스프링은 SOLID 원칙을 준수하기 위해 IoC, DI 등을 지원하고 있다. 이를 위해 스프링 컨테이너가 존재한다. 위의 목적을 달성하기 위해 자바 객체를 스프링 컨테이너에서 직접 관리한다. 관리하는 자바 객체를 빈이라고 하고 이름과 객체를 한 묶음으로 관리하게 된다. 그림으로 표현하면 다음과 같다. [스프링 컨테이너] 실제로 스프링이 어떻게 객체를 주입하는지 코드를 통해 알아보자. @Configuration public class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository..
스프링의 핵심 먼저 스프링의 핵심이 되는 3가지 개념에 대해 알아보자. IoC (Inversion of Control) IoC란 "제어의 역전"이다. 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다. 프로그램의 제어권은 보통 개발되는 애플리케이션에 존재하였는데 스프링에서는 DI 컨테이너가 객체의 생성, 초기화, 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리한다. 이처럼 제어권한을 프레임워크가 소유한다는 것이 제어의 역전이다. DI (Dependency Injection) DI란 "의존성 주입"이다. 이는 IoC를 실제로 구현하는 방법으로 객체의 의존관계를 코드로 명시하는 것이 아니라 설정 파일에 등록된 정보를 바탕으로 외부에서 생성한 후 주입시켜준다. 스프링에서는..