2024.08.01(목) Spring AOP

박현석·2024년 8월 1일

Q. 스프링 AOP 란 무엇인가요?

AOP는 Aspect-Oriented Programming의 약어로 공통된 관심사를 핵심 비즈니스 로직과 분리하여 모듈화 하는 기술입니다. AOP를 통해 로깅, 트랜잭션 등 의 기능을 애플리게이션에 적용할 수 있고, 주요 로직과 분리하여 독립적으로 관리를 할 수 있습니다.

Q. AOP 를 사용하는 경우의 장점은 무엇이고 단점은 무엇이 있을까요?

코드의 재사용성과, 유지보수 , 가독성을 향상합니다. 단점은 AOP가 Runtime에 코드가 삽입되기 때문에 디버깅이 어려울수 있고, 코드가 복잡하다면 코드의 흐름을 이해하기 어려울수 있고, 잘못된 사용으로 성능저하가 일어날수 있다.

Q. 스프링 시큐리티를 사용한다면 admin, 팀장, 직원 등 직급에 따른 권한은 어떻게 구현할 것인가요?

Spring 시큐리티는 직급에 따른 권한을 구현하기 위해 RBAC 기법이 있습니다.
member의 권한역할을 유저엔티티에 추가하고, 컨트롤러나, 서비스 로직 부분에 hasrole 을 통해 권한을 구분합니다.

Q. 스프링 시큐리티를 못쓰는 상황이라면 위와 같은 요구조건을 어떻게 구현할 것인가요?

사용자 의 정보를 데이터베이스에 저장하고 이를 확인하는 로직을 구현합니다.

Q. MVC 패턴을 설명해주시고, 각각의 요소와 그 사용의 이유를 설명해주세요.

MVC(Model-View-Controller) 패턴은 애플리케이션의 비즈니스 로직과 프레젠테이션 로직을 분리하는 디자인 패턴입니다.

Model: 애플리케이션의 데이터와 비즈니스 로직을 관리합니다. 데이터베이스와의 상호작용을 담당하며, 데이터를 가져오거나 저장하는 역할을 합니다.

View: 사용자에게 데이터를 보여주는 역할을 합니다. HTML, JSP, Thymeleaf 등 다양한 템플릿 엔진을 사용하여 데이터를 렌더링합니다.

Controller: 사용자의 요청을 받아 처리하고, 모델과 뷰를 연결하는 역할을 합니다. 사용자 입력을 검증하고, 모델을 통해 데이터를 처리한 후, 결과를 뷰에 전달합니다.

MVC를 사용하는 이유는 구성요소의 변경에 유연하게 대처하기 위함과, 변경시 영향을 최소화 하기위함,
그리고 이런 코드들을 재사용 하여 재사용성을 높이기 위함입니다.

Q. Spring DI 에 대해 설명해주세요.

Spring DI는 프레임워크에서 제공하는 기술중 하나로 의존성 주입을 쉽게 구현하도록 해주는 기술입니다.
DI는 객체 간의 결합도를 낮추어 유지보수를 높이기 위해 의존 관계를 외부에서 관리하는 것입니다.
어노테이션으로 @Autowired, @inject, @Resource 등이 있습니다.

Q, Interceptor 와 Filter 의 차이점을 말해주세요.

Interceptor은 Spring이 제공하는 기술이고, 디스패쳐 서블릿이 컨트롤러를 호출하기 전/후 의 요청/응답을 참조, 가공하는 기술
Filter는 디스패처 서블릿에 요청이 전달되기 전/후 URL패턴에 따른 모든 요청에 작업을 처리하는 기능을 제공합니다.
둘의 차이점으로는 인터셉터는 스프링 컨테이너 안에서 동작하고, 필터는 스프링이전의 서블릿 영역에서 관리합니다. 인터셉터는 스프링 영역에서 관리되기 때문에 필터는 스프링이 처리하는 내용을 적용받을수 없습니다.
만약 Spring의 Exception을 사용한다면 보통의 상황에서 예외가 서블릿까지 도달하기전 처리를 하지만,
필터에서 Exception이 발생한다면 에러처리를 하지않고, 서블릿 까지 전달이 된다. 이를통한 객체의 예외처리를 따로 해줘야한다.

Q. 스프링레거시와 스프링 부트의 차이는 무엇인가요?

두가지 다 Spring Framework의 두가지 버전입니다.
레거시는 오랜기간 운영되어온 과거의 시스템으로 XML 설정 파일을 직접 작성해야하고, WAR파일의 패키징을 한다면 Spring Boot는 레거시 시스템의 설정과 배포를 간편하게 관리하는 도구이고, 자동 설정과, 내장서버 의 기능을 제공하여 별도의 설정없이 간편한 애플리게이션을 실행 구축 하게 도와줍니다.

Q, Dispatcher-Servlet 이란 무엇인가요?

HTTP의 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러 라고 정의를 합니다.
디스패처 서블릿은 공통적인 작업을 처리한 후 들어오는 요청에 대한 해당 요청을 처리하는 컨트롤러에 위임합니다.

profile
너에게만광대

0개의 댓글