JaeWon's Devlog
article thumbnail
Published 2020. 3. 1. 18:22
Spring 면접 준비 면접
반응형

2020/03/01 - [면접] - Java 면접 준비

2020/03/01 - [면접] - JSP 면접 준비


정리

1. Spring 이란?
- 자바 플랫폼을 위한 오픈소스(open source) 애플리케이션 프레임워크
- 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션
- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구

특징
- POJO 기반 : 자바 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있음
- 의존성 주입 : 메소드나 객체의 호출을 개발자가 아닌 외부에 의해서 결정 함
- AOP의 지원 : 보안, 로그같은 횡단 관심사를 모듈로 분리하여 공통 기능을 재사용 하도록 돕는 기법 지원
- 트랜잭션의 지원: 트랜젝션의 처리를 애노테이션이나 XML로 설정할 수 있음

2. Spring 기본 환경 설정 파일
[파일] root-context.xml

        - 공통빈을 설정하는곳, view 제외 빈 설정(Dao 등)
[파일] appServlet 폴더 내의 servlet-context.xml
        - servlet 요청과 관련된 객체 정의 파일
        - view페이지 경로 및 파일명 지정
        - bean 설정(베이스 패키지 하위 모든 어노테이션 스캔하여 빈 등록 등)
[파일] web.xml
       - 환경설정 부분, 배포 서술자, 서블릿 이름을 설정하고, 패턴을 설정한다. (.do 패턴 등)
       - filter를 활용하여 encodingFilter 를 추가하여 한글이 깨지지 않도록 설정하기도 한다.
       - 각 에러 코드별 error-page를 설정할 수 있다.
       - 웹 애플리케이션 요청 시 시작파일을 지정
[파일] pom.xml
       - Maven 설정 파일 / 필요한 라이브러리 다운 받는 경우 사용

3. 프레임워크란?
- 특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스프레임과 인터페이스 프레임의 집합
- 특정한 틀을 만들어놓고 거기에 살을 붙여 놓음으로써 프로그램을 만들어 작업 시간을 줄여주는 것이다.

장점 
- 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.

단점 
- 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 불가능해지는 점이다.

4. 라이브러리 / 프레임워크
- 프레임워크는 큰 틀을 제공하고 내 코드는 프레임워크 틀 안에 맞춰서 작성해야 한다. 
  큰 뼈대에 내가 내용물을 채우는 느낌
- 라이브러리는 사용할 수 있는 함수들의 모음으로, 내가 라이브러리를 호출해서 능동적으로 사용

5. DI
- Dependency Injection은 Spring Framework에서 지원하는 IoC의 형태이다.
- DI는 클래스 사이의 의존관계를 Bean 설정 정보를 바탕으로
  컨테이너가 자동적으로 연결해주는 것을 말한다.
- 개발자들은 제어를 담당할 필요없이 Bean 설정 파일에 의존관계가 필요하다는 정보만 추가해주면 된다.
- 컨테이너가 실행 흐름의 주체가 되어 Application 코드의 의존관계를 주입해주는 것

의존성이란?
- 현재 객체가 다른 객체와 상호작용하고 있다면 다른 객체들을 현재 객체의 의존이라 한다.

의존성이 위험한 이유
- 하나의 모듈이 바뀌면 의존하고 있는 다른 모듈까지 변경되어야 한다.
- 테스트 가능한 어플을 만들 때 의존성이 있으면 유닛테스트 작성이 어렵다.
- 유닛테스트의 목적 자체가 다른 모듈로부터 독립적으로 테스트하는 것을 요구한다.

DI의 특징
- ‘new’를 사용해 모듈 내에서 다른 모듈을 초기화하지 않으려면 객체 생성은 다른 곳에서 하고, 
  생성된 객체를 참조하면 된다.
- 의존성 주입은 IoC 개념을 바탕으로 한다. 클래스가 외부로부터 의존성을 가져야한다.

DI가 필요한 이유
- 클래스를 재사용 할 가능성을 높이고, 다른 클래스와 독립적으로 클래스를 테스트 할 수 있다.
- 비즈니스 로직의 특정 구현이 아닌 클래스를 생성하는데 매우 효과적

6. AOP
- JAVA의 경우 다중 상속이 불가능 하기 때문에 공통 기능을 상속 받는 것에 한계가 있는 경우가 생김
- OOP 만으로 해결할 수 없는 의존관계의 복잡성과 코드 중복을 해결
- 핵심 기능과 공통기능을 분리하여, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식
- 공통 모듈을 여러 코드에 적용하는 기법

7. MVC 패턴
- MVC는 Model-View-Controller의 약자로 개발할 때 3가지 형태로 구분하여
  개발하는 소프트웨어 개발 방법론입니다.
- Model : data 처리와 접근을 담당
- View : Client에 보여지는 화면을 담당
- Controller : Model과 View를 제어

장점 : 로직과 데이터 등 어플리케이션을 세부분으로 분리함으로써
        더 이해하기 쉬워지고 부속간의 의존성이 낮아진다.
단점 : 복잡한 대규모 프로그램을 개발을 하게 되면 Controller를 통해 View와 Model 간에도
        관계가 복잡하게 연결되어있어서 수정시 테스트가 힘들고, 파악이 어렵기 때문에 
        여러 Side-Effect를 불러온다.

8. Spring MVC 구조의 처리과정
a) DispatcherServlet
- 어플리케이션으로 들어오는 모든 Request를 받는 관문
- Request를 실제로 처리할 Controller에게 전달하고 그 결과값을 받아서
  View 에게 전달하여 적절한 응답을 생성할 수 있도록 흐름을 제어한다.
b) HandlerMapping
- Request URL 각각 어떤 Controller가 실제로 처리할 것인지 찾아주는 역할
c) Controller
- Request를 직접 처리한 후 그 결과를 다시 DispatcherServlet에게 돌려준다.
d) ModelAndView
- Controller가 처리한 결과와 그 결과를 보여줄 View에 관한 정보를 담고있는
객체이다.
e) ViewResolver
- View 관련 정보를 갖고 실제 View를 찾아주는 역할을 한다.
f) View
- Controller가 처리한 결과값을 보여줄 View를 생성한다.

9. mybatis의 역할
- mybatis는 개발자가 지정한 SQL, 저장프로시저, 매핑을 지원하는 프레임워크.
- 이러한 연결 프로그램으로 인해 프로그램 소스코드에서 SQL 문장을 분리하여
  별도의 XML 파일로 저장하고 이 둘을 서로 연결 시켜주는 방식으로 작동한다.

반응형

'면접' 카테고리의 다른 글

JSP 면접 준비  (0) 2020.03.01
Java 면접 준비  (0) 2020.03.01
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!