스프링
레이어드 아키텍처
💡레이어드 아키텍처 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미한다. 레이어드 아키텍처는 어떻게 설계하느냐에 따라 용어와 계층의 수가 달라진다. 💡프레젠테이션 계층 애플리케이션의 최상단 계층으로, 클라이언트의 요청을 해석하고 응답하는 접점 역할 UI나 API를 제공 프레젠테이션 계층은 별도의 비즈니스 로직을 포함하고 있지 않으므로 비즈니스 계층으로 요청을 위임하고 받은 결과를 응답하는 역할만 수행한다 상황에 따라 유저 인터페이스(UI) 계층이라고도 한다 클라이언트로부터 데이터와 함께 요청을 받고 처리 결과를 응답으로 전달하는 역할 💡비즈니스 계층 애플리케이션이 제공하는 기능을 정의하고 세부 작업을 수행하는 도메인 객체를 통해 업무를 위임하는 역할을 수행한다..
관점 지향 프로그래밍(Aspect Oriented Programming, AOP)
💡관점 지향 프로그래밍 등장 배경 프로그래밍을 하다보면 공통적인 기능이 많이 발생하는데 이러한 공통 기능을 모든 모듈에 적용하기 위해선 상속을 이용한다. 하지만 Java에서는 다중 상속이 불가능하며 상속만으로 공통 기능을 부여하기에는 한계가 있다. 예를 들어, 객체마다 핵심 기능을 수행하기 위한 로직과 함께 로깅, 트랜잭션 등의 코드가 있는데 로깅과 트랜잭션 코드는 객체마다 동일한 기능을 수행할 확률이 높고 동일한 코드가 각각의 객체에 포함될 수 있다. 💡 이러한 문제를 해결하기 위해 AOP를 사용한다. AOP는 관점을 기준으로 개발하는 방식을 의미하며 여기서 관점이란 어떤 기능을 구현할 때 '핵심 기능'과 '부가 기능'으로 구분해 각각을 하나의 관점으로 보는 것을 의미한다 💡 핵심 기능은 비스니스 로직..
제어 역전(Inversion of Control, IoC)과 의존성 주입(Dependency Injection, DI)
💡제어 역전(IoC) 스프링 프레임워크 없이 개발할 때는 객체의 생성, 설정, 초기화, 메소드 호출, 소멸 등 객체의 생명 주기 관리를 개발자가 직접 관리하지만 스프링 프레임워크를 사용하면 객체의 생명 주기를 스프링 컨테이너, IoC 컨테이너에 위임할 수 있다. 이렇듯 객체의 관리를 개발자가 직접 하지 않고 컨테이너에 맡겨서 외부로 제어권을 위임한 것을 제어 역전이라고 부른다 객체의 생명 주기를 프레임워크에 위임하면 외부 라이브러리가 프로그래머가 작성한 코드를 호출하고 흐름을 제어할 수 있게 된다. 이렇게 되면 개발자는 비즈니스 로직을 작성하는 데에 더 집중 할 수 있다. 💡의존성 주입(DI) 의존성 주입이란 제어 역전의 방법 중 하나로, 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 ..