본문 바로가기

개발자 기술 면접/Spring8

[Spring] AOP(Aspect Oriented Programming)란? AOP(Aspect Oriented Programming, 관점 지향 프로그래밍) AOP는 기능을, 핵심 관심 사항(Core Concern)과 공통 관심 사항(Cross-Cutting Concern)으로 분리시키고 각각을 모듈화 하는 것을 의미합니다. AOP는 부가 기능을 애스펙트(Aspect)로 정의하여, 핵심 기능에서 부가 기능을 분리함으로써 핵심 기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있게 도와주는 개념입니다. OOP에서 핵심 비즈니스 로직과 독립적으로 분리하기 힘든 부가 기능들을 AOP의 Aspect를 활용해 모듈화해줍니다. ※ 대표적인 예 : 로깅, 트랜잭션, 보안 등에 사용. [참고] https://dev-coco.tistory.com/81 2024. 1. 2.
[Spring] 필터(Filter)와 인터셉터(Interceptor)의 차이 필터(Filter) - 필터는 Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가 작업(보안, 인증, 로깅)을 처리할 수 있는 기능을 제공합니다. - 웹 컨테이너에서 동작(즉, 스프링 컨테이너 밖). 인터셉터(Interceptor) - 인터셉터는 Dispatcher Servlet이 Controller를 호출하기 전/후에 인터셉터가 끼어들어 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공합니다. (보안, 인증/인가, 로깅, Controller로 넘겨주는 정보(데이터)의 가공 등에 사용) - 스프링 컨테이너 안에서 동작. 2023. 12. 28.
[Spring] DI(Dependency Injection), 의존성 주입 3가지 방법 1. 생성자 주입 방식 생성자를 통해서 의존 관계를 주입받는 방법입니다. 생성자에 @Autowired를 하면 스프링 컨테이너에 @Component로 등록된 빈에서 생성자에 필요한 빈들을 주입합니다. 스프링 공식 문서에서 권장하고 있는 방식. 특징 생성자 호출 시점에 1번만 호출되는 것을 보장한다. 불변과 필수 의존 관계에 사용한다. 생성자가 1개만 존재하는 경우 @Autowired를 생략해도 자동 주입된다. NPE(NullPointerException)를 방지할 수 있다. 주입받은 필드를 final로 선언 가능하다. ※ 생성자 주입을 사용해야 하는 이유 ※ 객체의 불변성 확보 테스트 코드의 작성 final 키워드 작성 및 Lombok과의 결합 2. 수정자 주입 방식 setter라 불리는, 필드의 값을 변.. 2023. 12. 28.
[Spring] 디스패처 서블릿(Dispatcher Servlet)이란? 디스패처 서블릿(Dispatcher Servlet) 디스패처 서블릿이란, 서블릿 컨테이너의 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다. 2023. 12. 27.
[Spring] DI(Dependency Injection), 의존성 주입이란? DI(Dependency Injection) 객체를 직접 생성하는 것이 아닌, 외부(스프링 컨테이너)에서 생성한 후 주입 시켜주는 방식입니다. 이러한 DI(의존성 주입)를 통해 객체 간의 결합도/의존성이 줄어들고 유연성이 높아집니다. 2023. 12. 27.
[Spring] IoC(Inversion of Control)란? IoC(Inversion of Control) 제어의 역전으로, 객체의 생성/의존 관계 설정/생명주기 관리까지 모든 객체에 대한 제어권이 역전된 것을 의미합니다. 즉 객체를 제어하고 관리하는 역할이 개발자로부터 스프링 컨테이너(외부)로 역전된다는 뜻입니다. 의존성을 역전시켜 객체 간의 결합도(의존도)를 줄이고 유연한 코드를 작성할 수 있습니다. 코드의 재사용성이 좋아지고, 유지 보수가 편해집니다. 2023. 12. 27.
[Spring] Spring과 SpringBoot의 차이 Spring vs SpringBoot 스프링은 기존 의존성 설정 시, 설정 파일이 매우 길고 모든 의존성에 대해 버전 관리도 하나하나 해줘야 했습니다. 반면에 스프링 부트는 starter 의존성 그룹을 통하여 보다 쉽게 설정할 수 있고 자동으로 버전을 관리해줍니다. 또한, 스프링 부트는 스프링과 달리 내장형 톰캣으로 별도의 서버 설치 및 설정이 필요 없어졌으며, 이로 인해 독립적으로 실행이 가능하여 jar 파일로 손쉬운 배포가 가능합니다. 그리고 스프링 부트는 “자동 구성” 기능을 통해 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동으로 등록해줍니다. 2023. 12. 26.
[Spring] MVC 패턴 MVC 패턴 - MVC 는 Model, View, Controller의 약자로서 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성 요소를 세 가지의 역할로 구분한 디자인 패턴입니다. Model - 애플리케이션의 정보(데이터) 정의 및 가공, 그리고 비즈니스 로직을 나타냄. View - 클라이언트(사용자)에게 보여지는 사용자 인터페이스 요소(화면), Model의 데이터를 표시. Controller - Model과 View를 연결시켜주는 역할. MVC 패턴의 장단점 장점 역할의 분리로 코드의 재사용성과 유지 보수성이 향상된다. 테스트에 용이하다. 단점 규모가 커질수록 파일이 많아져 복잡해질 수 있다. Cf) 디자인 패턴 2023. 12. 26.
반응형