일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트
- MVC
- 기술 대비
- 자바
- 인텔리제이
- 코테
- 프레임워크
- 인프런
- DDL
- 뉴렉처
- 서브쿼리
- select
- Model1
- 서블릿
- SQL
- @Controller
- toUpperCase
- 스프링
- 프로그래머스
- STS
- 세션
- Model2
- JSP
- 김영한
- MVC2
- Join
- AOP
- 메이븐
- order by
- @RestController
- Today
- Total
Heestory
기술 대비 ) 프레임워크, AOP 본문
1. 프레임워크란 무엇인가? + 프레임워크의 특징과 프레임워크와 라이브러리 차이점은 무엇인지 설명하시오.
👉🏻 Framework란 소프트웨어 환경에서 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조입니다. 뼈대가 되는 부분을 미리 구현한 클래스, 인터페이스 , 메소드 등의 모음이라고 할 수 있습니다. 프레임워크는 설계자가 의도한 여러 디자인 패턴으로 구성되어 있습니다. 따라서 개발자가 에플리케이션의 구조적 설계를 신경 쓸 필요가 없습니다. 또한 일정 수준 이상의 품질을 보증하는 코드를 비교적 빠르고 편하게 완성 및 유지보수할 수 있는 솔루션이라고 할 수 있습니다.
👉🏻 라이브러리와 프레임워크는 애플리케이션의 틀과 구조를 결정한다는 측면에서 활용도가 상당히 유사하나 라이브러리는 특정 기능이 필요할 때 호출해서 쓰는 도구 모음입니다. 프레임워크가 큰 뼈대는 이미 잡혀있고 그 안의 내용물을 채우는 느낌이라면 라이브러리는 개발자가 호출해서 능동적으로 사용하는 것이라고 볼 수 있습니다. 즉, 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있는 반면 라이브러리는 쓰든 안쓰든 개발자 마음대로 할 수 있다는 점에서 차이가 있습니다.
(+) Spring Framework
- 자바(JAVA) 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
- 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 기구
- 자바로 된 프레임워크로 JavaSE로 된 자바 객체(POJO)를 JavaEE에 의존적이지 않게 연결해주는 역할
특징
- 크기와 부하의 측면에서 경량
- 제어 역행(IOC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모.
- 관점 지향 프로그래밍(AOP)을 위한 풍부한 자원
- 애플리케이션 객체의 생명주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 할 수 있음
- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음
4. Spring AOP가 무엇인지 OOP와 AOP를 비교하여 설명하시오.
👉🏻 AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 합니다. 애플리케이션의 핵심적인 기능과 부가적인 기능을 분리해 Aspect라는 모듈로 만들어 설계하고 개발하는 방법입니다. OOP는 Object Oriented Programming의 약자로 객체 지향 프로그래밍이라고 합니다. OOP와 AOP는 서로 상반되는 개념은 아니며 오히려 OOP를 더욱 OOP답게 사용할 수 있도록 하는 것이 AOP입니다.
공통적 기능을 모든 모듈에 적용하기 위한 방법으로 상속을 이용하는데 Java에서는 다중 상속이 불가능합니다. 그리고 기능 구현 부분에서 핵심 코드와 공통 기능 코드가 섞여있어서 보기에도 불편하고, 효율성이 떨어집니다. 이러한 이유로 AOP가 등장했습니다.
💡 주요 용어
- Aspect - 공통 기능 / Advice와 Pointcut을 합친 개념
- Advice - Aspect의 기능 자체 / 무엇을 삽입할 것인가? / 부가적인 기능(횡단적 관심)을 정의한 코드
- Joinpoint - Advice를 적용해야 하는 부분. 즉, 어떤 시점에 삽입할 것인지에 대한 특정 위치.
1. before : 메소드 실행 전 2. after : 메소드 실행 후
3. AfterReturning : 반환된 후 4. AfterThrowing : 예외가 던져지는 시점
5. around : 메소드 실행 전, 후 - Pointcut - Joinpoint의 부분으로 실제 Advice가 적용된 부분 / 어떤 클래스의 어떤 메소드에 어느 joinpoint를 사용할 것인가?
- Weaving - Advice를 핵심기능에 적용하는 행위 / AOP가 기존의 핵심 관심 모듈의 코드에 전혀 영향을 주지 않으면서 필요한 횡단 관심 기능을 추가할 수 있게 해주는 핵심적인 처리 과정.
- Proxy - Client와 Target 사이에 존재하면서 부가기능을 제공하는 object / Aspect가 곧바로 핵심 기능에서 실행되는 것이 아니라, proxy(대행자)에서 공통 기능이 수행하도록 하는 것.
'개발(~국비) > 기술면접' 카테고리의 다른 글
01.기본형 참조형 (0) | 2022.10.19 |
---|---|
03.접근제어자(Access Modifier) (0) | 2022.10.10 |
기술대비 ) 라이브러리 vs 프레임워크 (0) | 2022.09.12 |
기술대비 ) JQuery (0) | 2022.09.11 |
기술 대비 ) 웹 (0) | 2022.09.11 |