프레임워크는 특정 형태의 소프트웨어 문제를 해결하기위해 만들어 놓은틀이며 개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도뼈대를 제공해주는 것입니다.
라이브러리는 특정 기능에 대한 도구 or 함수들을 모은 집합입니다.
둘의 차이는 Flow(흐름)에 대한 제어 권한이 어디에 있느냐의 차이입니다. 프레임워크는 전체적인 흐름을 자체적으로 가지고 있으며, 프로그래머가 그 안에 필요한 코드를 작성하는 반면에 라이브러리는 사용자가 흐름에 대해 제어를 하며 필요한 상황에 가져다 쓰는 것입니다.
이 내용을 한 문장으로 정리하자면 프레임워크에는제어의 역전이 적용되어있다는 것입니다.
2. OOP와 AOP의 차이는 무엇입니까?
oop란?
하나의 객체를 가지고 독립적으로 사용하거나 그것을 부품으로써 재사용이 가능하며 부품끼리를 서로 결합하여 새로운 객체를 만들어 사용 하는 것입니다.
AOP란?
AOP는 Aspect Oriented Programming의 약자로관점 지향 프로그래밍이라고 합니다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고그 관점을 기준으로 각각 모듈화하겠다는 것입니다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말합니다.
3. Spring filter와 Intercepter의 차이점은 무엇입니까?
인코딩이나 보안 관련 처리와 같은web app의 전역적으로 처리해야 하는 로직은 필터로 구현하고 클라이언트에서 들어오는디테일한 처리(인증, 권한 등)에 대해서는 주로 인터셉터에서 처리합니다.
1. Filter(필터)
말그대로 요청과 응답을 거른뒤 정제하는 역할을 합니다.
서블릿 필터는 DispatcherServlet 이전에 실행이 되는데 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있습니다.
또한 자원의 처리가 끝난 후 응답내용에 대해서도 변경하는 처리를 할 수가 있습니다. 보통 web.xml에 등록하고, 일반적으로 인코딩 변환 처리, XSS방어 등의 요청에 대한 처리로 사용이 됩니다.
2. Interceptor(인터셉터)
요청에 대한 작업 전/후로 가로챈다고 보면 됩니다..
필터는 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작합니다.
하지만 인터셉터는 스프링의 DistpatcherServlet이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 스프링 컨텍스트(Context, 영역) 내부에서 Controller(Handler)에 관한 요청과 응답에 대해 처리한다.
정보의 1차적인 처리, 데이터 유효성 검사, 예외처리, 트랜잭션 처리 등 여러 장소에서 공통적으로 요구되는 로직 뒤에 이어지는 Business Logic에 전달하기 위한 데이터를 가공하는 부분 한 개의 클래스에 많은 메소드가 포함되고 각각의 메소드는 서로 직접적인 연관성이 없는 것이 일반적이다 정보처리를 위한 범용 로직 정보를 1차적으로 검사 및 가공하여 뒤에 이어지는 Business Logic를 호출한다 예) BoardService, MemberSerice, CartService
Business Logic
정보의 최종 처리, 핵심적인 로직 한 개의 비즈니스 로직은 한개의 클래스에 정의되는 것이 보통이므로 클래스의 규모가 작은 것이 보통이다 데이터베이스 접속이 필요하면 Data Access Layer를 호출한다