1. 스프링 프레임워크의 특징
개념: 자바 플랫폼을 위한 오픈 소스, 경량급, 애플리케이션 프레임워크.동적인 웹사이트 개발을 위한 여러 서비스를 제공하며 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하는 전자정부 프레임워크의 기반 기술로 쓰임.
대표적 특징
1) DI(Dependency Injection)의존성 주입
xml설정파일이나 어노테이션을 통해 객체 간 의존관계를 설정하기 때문에 개발자가 직접 객체를 생성할 필요 없이, 프레임워크가 서로 연결시켜준다.
2) AOP(Aspect Oriented Programming)관점지향프로그래밍
트랜잭션, 로깅, 보안 등의 여러 모듈, 여러 계층에서 공통으로 필요하는 기능의 경우 해당 기능을 분리하여 관리
*Aop, Filter, Interceptor의 차이
: 세가지 모두 어떤 행동이 취해지기 전에 먼저 실행되거나 실행 후 추가적인 기능이 필요할 때 사용되는 기능이다.
filter는 스프링 컨텍스트 외부에 있어 dispatcherservlet 이전에 실행된다. 일반적으로 인코딩 변환 처리, xss방어 등의 요청에 대한 처리로 사용됨.
interceptor는 스프링 컨텍스트 내부에서 DispatcherServlet이 컨트롤러를 호출하기 전, 후로 끼어들어 스프링의 모든 빈 객체에 접근할 수 있다. 일반적으로 로그인 체크, 권한체크, 프로그램 실행시간 계산작업 로그확인 등을 확인한다.
aop는 oop를 보완하기 위해 나온 개념인데, 중복을 줄일 수 없는 부분을 줄이기 위해 등장했고, 주로 로깅, 트랜잭션, 에러 처리 등의 공통 기능을 따로 관리한다.
참고 : goddaehee.tistory.com/154
3) POJO(Plain Old Java Object)
-> 일반적인 J2EE(JAVA2 Enterprise Edition) 프레임워크에 비해 구현을 위해 특정 인터페이스를 구현하거나 상속받을 필요가 없어서 개발이 쉽고, 기존 라이브러리를 지원하는데 용이하다. pojo란 javabeans객체를 의미하며 java2EE에 의존적이지 않게 연결한다.
4) 제어 역행(Inversion of Control)
컨트롤 제어권이 개발자가 아닌 프레임워크에 있다는 뜻으로 필요에 따라 스프링에서 사용자 코드를 호출한다.
5) 경량 컨테이너
크기와 부하적인 측면에서 경량 컨테이너라고 할 수 있으며 자바 객체를 직접 관리한다. 객체의 생성부터 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
6) 컨테이너
애플리케이션의 객체 생명주기와 설정을 포함하고 관리하는 점에서 일종의 컨테이너라고 할 수 있다.
ibatis, mybatis, hibernate와 같은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.(영속성과 관련된 다양한 서비스 지원)
7) 높은 확장성
수많은 라이브러리가 이미 스프링에서 지원되고 있고, 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하기에 확장성이 높다.
2. DI란 무엇인가?
dependency Injection으로 개발자가 직접 값을 대입해주지 않아도, 컴파일 시 내부적으로 값을 자동 맵핑하고 동작을 시작하는 것을 말합니다.
3. 자동으로 DI해주는 어노테이션에는 어떤 것들이 있나요?
Autowired와 Resource가 있습니다. Autowired는 Qualifier어노테이션으로 명시된 Bean객체를 생성하고 Resource는 name속성을 이용해 자동으로 의존성을 주입합니다.
4.AOP란 무엇이고 어드바이스 종류를 말해주세요.
핵심 비즈니스 로직과 공통모듈을 구분하여 핵심 로직에 미치는 영향을 최소화하기 위해 트랜잭션, 로깅, 보안과 같은 공통 기능만 따로 관리하여 잘 끼워 넣는 방법으로 코드 밖에서 설정되는 것이 특징입니다.
5. Spring MVC동작방식을 설명해 주세요.
SpringMVC는 크게 아래의 동작 방식을 가집니다.
Request요청 / View - > DispatcherServlet - > ( Controller -> Model Service -> Model Dao ) -> DataBase
Response응답 / DataBase - > (Model Dao -> Model Service - > Controller) -> DispatcherServlet -> ViewResolver
: 클라이언트는 View를 통해 요청을 하고, 해당 요청은 DispatcherServlet으로 전달되어 어떤 Controller에 접근해서 요청을 수행해야 하는지 확인하고 요청과 함께 온 인자값을 전달합니다. Controller에서는 요청에 필요한 메소드를 호출시켜 전달된 값을 Model의 Service영역에 전달하고 mvc2방식과 같이 dao, 데이터베이스를 거쳐 처리됩니다. service에서는 요청에 필요한 작업을 dao를 통해 수행하고 해당 결과값을 다시 controller에게 반환합니다.
controller는 응답 결과값을 model 혹은 view객체를 통해 DispatcherServlet에게 전달하고, ViewResolver를 통해 응답 내용을 화면에 보여줄 웹페이지로 전달합니다.
6. Framework란?
개발자가 소프트웨어를 개발할 때 개발 시간을 단축시키고, 코드의 재사용성을 높이기 위해 설계 기본이 되는 뼈대나 구조라고 할 수 있다. 지켜야 하는 원칙이 존재하고 개발 시 유용한 다양한 도구 및 플러그인들을 지원한다.
장점: 정형화되어 있어 일정 수준 이상의 품질을 기대할 수 있고, 유지보수가 쉬우며, 개발 기간을 단축시킬 수 있다.
단점: 지나친 의존 시 개발자의 능력이 떨어져 스스로 개발하는 게 어려워질 수 있으며, 프레임워크를 습득하는 시간이 오래 걸릴 수 있다.
*Framework의 종류
구분 |
종류 |
설명 |
영속성 Framework |
MyBatis, Hibernate |
데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일을 라이브러리화하여 구현 |
자바 Framework |
Spring Framework, 전자정부표준 Spring, Struts |
Java EE를 통한 웹 애플리케이션 개발에 초점을 맞춰 필요한 요소들을 모듈화해 제공 |
화면구현 Framework |
Bootstrap, Foundation, MDL |
Front-End를 보다 쉽게 구현할 수 있게 틀 제공 |
기능 지원 Framework |
Log4j, JUnit 5, ANT |
특정 기능이나 업무 수행에 도움을 줄 수 있는 기능 제공 |
'기술면접 준비' 카테고리의 다른 글
기술면접준비 Spring framework (0) | 2021.05.12 |
---|---|
기술면접준비(Oracle DB) (0) | 2021.05.07 |
기술면접준비 (0) | 2021.05.03 |
기술면접준비 (0) | 2021.04.29 |
기술면접 준비 (0) | 2021.04.27 |