Spring 에 대해 학습하며, Spring 은 MVC 디자인 패턴을 따른다고 배웠습니다.MVC 패턴에 대해 검색하면 항상 함께 나오는 패턴이 MVP, MVVM 패턴인데, 이에 대해 한번 정리해보고자 합니다.디자인 패턴이란?디자인 패턴은 건축으로치자면 공법에 해당하는 것으로, 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법입니다. 소수의 뛰어난 엔지니어가 해결한 문제를 다수의 엔지니어들이 처리할 수 있도록 한 규칙이면서, 구현자들 간의 커뮤니케이션의 효율성을 높이는 기법입니다. MVC패턴MVC란 Model-View-Controller의 약자로, 애플리케이션을 세가지 역할로 구분한 개발 방법론입니다. MVC 패턴은 비지니스 로직과 화면을 분리합니다. 이러한 관심사 분리는 업무를 분담하여 유지보수..
Java 언어로 프로젝트를 하며 다음과 같이 어노테이션을 이용하여 어떠한 상황을 명세하는 경우가 많습니다. 특히 스프링을 이용해 프로젝트를 한다면 어노테이션을 통해 Controller나 Service등을 명시하여 빈으로 등록하여 사용합니다. 그렇다면 이러한 어노테이션은 무엇이고, 어떻게 작동하는 걸까요 ? 어노테이션이란 ?자바에서 어노테이션은 사전적 의미로 주석이라는 뜻을 가지고 있습니다. 자바의 어노테이션은 소스코드에 추가하여 사용할 수 있는 일종의 메타데이터입니다. 여기서 메타데이터란, 애플리케이션이 처리해야할 데이터가 아니라 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야하는지를 알려주기 위한 추가 정보입니다. JDK 1.5 버전 이상, 자바 8버전부터 사용 가능하며, 자바 어노테이션은 클래스 ..
스레드 동기화란?하나의 프로세스는 스레드와 데이터, 그리고 자원으로 구성됩니다. 하나의 프로세스내의 스레드들은 각자의 PC와 register를 지니고 있지만, 자원과 데이터는 공유하여 사용합니다.싱글스레드 환경에서는 공유 데이터에 대해 하나의 스레드만 접근하여 사용하므로 동기화에 대해 문제가 발생하지 않습니다. 그러나 멀티스레드 환경에서 둘 이상의 스레드가 공유 데이터에 동시에 접근하게 되면 문제가 발생할 수도 있습니다.이러한 문제를 막기 위해 스레드 동기화를 해야 합니다.동기화를 하지 않는다면 ?동기화를 하지 않는 경우를 먼저 그림을 통해 생각해보도록 하겠습니다.다음은 예금 인출 방법입니다. 가장 이상적인 예시로는 여러번의 요청이 와도 차례대로 처리가 되어 잔액이 마이너스가 되거나, 중간에 요청이 겹..
리플렉션이란리플렉션이란 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API입니다.컴파일 시간이 아닌 런타임 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이라고 할 수 있습니다. 언제 사용동적으로 클래스를 사용해야 할 때 사용합니다.다시말해, 작성 시점에는 어떠한 클래스를 사용해야 할지 모르지만, 런타임 시점에서 가져와 실행해야하는 경우에 사용됩니다.프레임워크나 IDE에서 이러한 동적 바인딩을 이용한 기능을 제공합니다.리플렉션 사용 예시Intellij 의 자동 완성 기능스프링 어노테이션스프링 어노테이션에서 리플렉션을 적용하는 방법은 추후 추가할 예정입니다. 리플렉션을 사용하여 가져올 수 있는 정보리플렉션을 통해 가져올 수 있..