본문 바로가기
인터페이스를 사용하는 이유 서론 자바로 애플리케이션을 개발할때, 인터페이스를 사용한다. 일반적으로 인터페이스에 대해서 설명을 하라고 하면 `기능에 대한 명세 집합` 이라고 표현하는 경우가 많다. 기능에 대한 명세를 모으기 위해서만 인터페이스를 사용하는가? 에 대해서 의문이 들었다. 인터페이스가 기능에 대한 명세 집합이라는 목적만 가지면 오히려 코드의 복잡성만 올라가는게 아닐까 생각이 든다. 인터페이스를 왜 사용해야하고 어떤 효과가 있는지 좀 더 깊이 알아보기 위해서 이 글을 작성하였다. 인터페이스 (Interface) ? 인터페이스의 본질을 알아보기전에 간단하게 OOP에 대해서 다시 정리하고 넘어가자. OOP는 변경에 유연한 설계기법이다. OOP에서 자주 나오는 용어에는 다형성이 있다. `다형성`은 상속을 통해 기능을 확장하거나 .. 2020. 5. 8.
java - static 변수 서론 싱글톤 패턴, 정적 팩토리 메서드 패턴등의 디자인 패턴에서 사용하는 static variable을 알아보자. static(정적), 뭐가 정적이라는걸까? 자바에서는 static 키워드를 사용해서 변수나 메서드를 선언할 수 있다. static을 붙인 변수와 붙이지 않은 변수의 차이점은 뭘까? static 이라는 영어단어를 한글로 해석하면 정적으로 해석할 수 있다. 정적이라는게 동적이지 않다는것인데, 뭐가 정적이라는걸까? 기능을 통해서 유추해보자. 아래와 같이 Test라는 클래스를 만들고 main 메서드를 static으로 선언하였다. JVM에서는 static main메서드를 보고 코드를 실행하게 된다. class Test { public static void main(String [] args) { Sy.. 2020. 5. 7.
Java에서 정수를 표현할때 왜 Integer를 많이 사용할까? 서론 Java의 데이터타입은 크게 `기본형 자료`와 `참조형 자료`로 구분할 수 있다. 먼저 기본형 자료형을 알아보자. Java의 자료형을 정리하는 차원에서 책을 보다가 byte와 short 자료형이 있는데 대부분의 정수형을 표현할때 Intege를 사용하는지 궁금증이 생겼다. 기본형 자료 논리형(boolean) Java 에서는 논리형 자료로 `boolean`을 제공한다. true와 false를 나타낸다. 다른 기본형과의 연산은 불가능한 특징이 있다. 크기는 1byte이다. 문자형(char) 컴퓨터는 0,1만 알고 있는 기계이다. 따라서 문자형도 결국에는 0,1로 저장이 된다. 내부적으로는 유니코드 / 아스키코드 로 맵핑시켜서 저장을 시킨다. 따라서 실수형이나 정수형과 연산이 가능한 특징이 있다. 크기는 .. 2020. 5. 7.
스프링 웹 프로그래밍 (2) Spring MVC Spring MVC는 스프링 프레임워크를 구성하는 모듈이다. 정싱 명칭은 Spring Web MVC이다. 서블릿 API를 기반으로 작성된 웹 프레임워크이고 `프론트 컨트롤러 패턴`과 `MVC 아키텍처 패턴`을 사용한다. 견고한 웹 애플리케이션을 만드는데 도움이 되는 풍부한 기능을 제공하고 `annotation`과 `reflection API`를 적극 사용한다. 위의 그림처럼 프론트 컨트롤러인 `DispatcherServlet`을 중심으로 동작하고 MVC(Model-View-Controller)가 협력해서 웹 요청과 응답을 처리하는 방식이다. HTTP요청이 들어오면 DispatcherServlet으로 전달을 한다. DispatcherServlet은 적절한 컨트롤러를 찾아서 요청을 위임하.. 2020. 2. 22.
스프링 웹 프로그래밍 (1) 자바 웹 애플리케이션 웹 애플리케이션? 인터넷을 통해 웹 브라우저에서 이용할 수 있는 서비스이다. URL를 기반으로 보고 싶은 컨텐츠를 HTTP요 요청을하고 서버는 요청을 처리한 후 응답을 한다. (SNS,웹 메일, e-commerce등의 다양한 서비스) 웹 브라우저는 사용자가 원하는 컨텐츠를 HTTP 요청으로 작성해서 웹 애플리케이션 서버에게 전송하고 돌려받은 HTTP 응답을 브라우저 화면에 출력한다. 웹 애플리케이션 서버는 브라우저가 전송한 HTTP요청을 분석후 사용자가 원하는 컨텐츠를 HTTP 응답으로 작성해서 브라우저에게 전송하는 기능을 제공한다. 브라우저와 서버간에는 HTTP 프로토콜을 이용한다. 클라이언트가 요청을 보내면 서버가 응답하는 단순한 구조로 만들어졌다. HTTP 요청에는 컨텐츠주소(.. 2020. 2. 22.