스프링 프레임워크란?
기업용 애플리케이션을 구축 할 수 있는 가벼운 솔루션,
스프링 프레임워크는 모듈화되어 있어 나머지 부분을 가져 오지 않고도 필요한 부문만 사용가능
자바 애플리케이션 개발을 위한 포과절인 인프라 지원을 제공하는 자바 플랫폼
스프링의 3가지 장점
생산성 : 모듈화되어있어 필요한 부문만 사용가능, 엔터프라이즈 애플리케이션을 구축하기 위해 POJO 클래스와 약 간의 설정만으로도 가능하며 이는 개발 생산성을 높여줌
품질보증 : 이미 검증된 많은 아키텍처 및 디자인 패턴을 적용하여 만들었기에 개발자는 코드에 아키텍처를 구현하기위한 코드나 디자인 패턴을 사용하기 위한 코드를 만들 필요가 없음 , 이는 개발에 일관성을 제공해주며 소프트웨어의 품질을 보증해줌
유지보수 : 스프링프레임워크는 업계표준으로 자리 잡았고 스프링 프레임워크를 사용하여 작성된 애플리케이션들은 소프트웨어를 유지보수하는데 들어가는 인력과 시간을 줄 일 수 있음
스프링의 특징
POJO(Plain Old Java Object) 기반의 프레임워크:
자바 객체의 라이프사이클을 스프링 컨테이너가 직접 관리하며, 스프링 컨테이너로부터 필요한 객체를 얻어올수 있음
DI(Dependency Injection) : 각 계층이나 서비스 들 사이 또는 객체들 사이에 의존 성이존재할 경우 스프링 프레임워크가 서로를 연결시켜줍니다. 이는 클래스들 사이에 약한 결합을 가능하게 함
AOP(Aspect Oriented Programming)을 지원 : 트랜잭션, 로깅 보안 등 여러 모듈에서 공통적으로 지원하는 기능을 분리하여 사용할 수 있음
IOC(Inversion of Control) 제어 반전
컨트롤의 제어권이 개발자가 아니라 프레임워크에 있다는 뜻 ,객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하고 있음. 객체를 생성하고, 직접 호출하는 프로그램이 아니라, 만들어둔 자원을 호출
Spring MVC 구조
MVC는 Model - Veiw -Controller의 약자 , 디자인 패턴의 하나이다.
Model - 논리적 데이터 기반 구조를 표현, 사용자 인터페이스에 관한 어떠한 정보도 가지고 있지 않음 (data 처리와 접근을 담당)
View - 사용자 인터페이스 내의 구성요소들을 표현 (사용자에게 보여지는 화면)
Controller - Model과 View를 연결하고 있는 클래스를 대표 (Model과 View 내의 클래스들 간 정보교환)
컨테이너(container)란?
컨테이너는 보통 인스턴스의 생명주기를 관리함, 생성된 인스터들에게 추가적인 기능을 제공하도록 하는것,
, 프레임워크 안에서 인스턴스들의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 부여한다.
WAS와 WS의 차이
WAS(Web Application Server) : 비지니스 로직을 넣을 수 있음 (Tomcat, PHP, ASP, Net 등)
WS(Web Server) : 비지니스 로직을 넣을 수 없음 (Nginx, Apache 등)
spring의 동작방식
1. DispatcherServlet이 브라우저로부터 요청을 받는다.
2. DispatcherServlet은 요청된 URL을 HandlerMapping 객체에 넘기고,
호출해야 할 Controller 메소드(핸들러) 정보를 얻는다.
3. DispatcherServlet이 HandlerAdapter 객체를 가져온다.
4. HandlerAdapter 객체의 메소드를 실행한다.
5. Controller 객체는 비즈니스 로직을 처리하고, 그 결과를 바탕으로 뷰(ex. JSP)에 전달할 객체를 Model 객체에 저장한다. DispatcherServlet에게 view name을 리턴한다.
6. DispatcherServlet은 view name을 View Resolver에게 전달하여 View 객체를 얻는다.
7. DispatcherServlet은 View 객체에 화면 표시를 의뢰한다.
8. View 객체는 해당하는 뷰(ex. JSP, Thymeleaf)를 호출하며,
뷰는 Model 객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리한다.
VO(Value Object) :값을 갖고있는 객체, 비즈니스 값을 가져올때 사용하며 , 보통 값을 수정할 수 없는 것으로 한다.
DTO와 혼용해서 쓰기도함.
DTO(Data Transfer Object) : VO와 같이 값을 갖고 있는 객체, VO와의 차이점은 DB로 치자면 하나의 인스턴스로 데이터 핸들링에 사용되는 객체이기 때문에 , DTO를 통해 데이터를 전달할 수 있다.
DAO(Data Access Object) : 실제 DB에 접속하는 객체
Interceptor 와 filter의 차이점
공통점 : Controller가 호출되기 전에 실행됨 Interceptor와 Filter는 Servlet 단위에서 실행된다. <> 반면 AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.
차이점 : filter는 dispatcher가 호출되기 전에 interceptor는 dispatcher가 호출되고 난 뒤 호출된다는 차이점이 있음
'Computer Science > Spring & Java' 카테고리의 다른 글
[JPA]스프링 프록시 (0) | 2022.11.21 |
---|---|
[JPA]스프링 연관관계 매핑 (0) | 2022.10.23 |
자바 면접 질문 리스트3 (0) | 2022.08.30 |
java 면접 질문 리스트2 (0) | 2022.08.07 |
JAVA 면접 질문1 (0) | 2022.07.21 |