CS기술면접/Spring

[Spring] Spring 기술면접

포포015 2021. 2. 16. 11:28
  • 프레임워크를 사용하는 이유는 무엇인가?
  • 왜 스프링 프레임워크가 개발의 대세가 된 것인가?
  • Spring의 특징은 무엇인가?
  • DI와 AOP에 대해 설명하시오
  • POJO는 무엇인가?
  • maven에 대해 설명하시오
  • mybatis의 역할은 무엇인가?
  • Spring MVC 구성요소에 대해 설명하시오
  • Spring 기본 환경 설정 파일 및 기능 설명하시오

 

프레임워크를 사용하는 이유는 무엇인가?

개발자는 각각의 실력이나 코딩 방법 등 차이가 큰 편이다. 

그렇다 보니 개발자 구성에 따라 프로젝트의 결과 차이가 많이 생겨서 이러한 것을 극복하기 위해서 프레임워크를 사용하는 것이다. 

구조가 있고, 그 구조 안에 개발자가 코드를 추가하는 형태로 개발을 하는 방식이 프레임워크를 사용한 개발로 일정한 품질이 보장되는 결과물을 얻을 수 있기에 프레임워크를 사용하는 것이다.

 

 

왜 스프링 프레임워크가 개발의 대세가 된 것인가?

스프링은 하드웨어적인 구성이 필요없는 경량프레임워크이고, 일반적인 java 클래스와 인터페이스를 이용하는 구조를 사용해서 진입 장법이 낮아서 개발자들이 접근이 쉬웠다고 한다. 그리고, 기본 구조를 흔들지 않고, 여러 종류의 프레임 워크를 혼용해서 사용 할 수 있다.

스프링은 처음에 이해해야 하는 부분은 많지만 결과적으로 코드의 양이 줄어서 개발 생산성이 높고, XML 설정 등을 이용하여 유지보수를 하기 때문에 효율적이다.

 

 

Spring의 특징은 무엇인가?

POJO 기반 : 자바 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있음 

의존성 주입 : 메소드나 객체의 호출을 개발자가 아닌 외부에 의해서 결정 함

AOP의 지원 : 보안, 로그, 같은 횡단 관심사를 모듈로 분리하여 공통 기능을 재사용 하도록 돕는 기법 지원

트랜잭션의 지원: 트랜젝션의 처리를 애노테이션이나 XML로 설정할 수 있음

 

 

DI란 무엇인가?

- 의존관계 주입이라는 뜻.

외부에서 의존 객체를 생성해서 전달하는것.

(개발자는 의존되는 객체를 직접관리할 필요가없어서 편하다 solid 원칙의 ocp개념에 속한다.)

a > b에 의존적으로 고정되어 있지않고 인터페이스형식으로 주입해서 ocp에 열려있음

- set주입, @Autowired , 생성자 주입방식이 있다.

 

 

IOC란 무엇인가?

- 제어의역전 이라는뜻.

메서드나 객체의 호출작업을 개발자가 하는게 아니라 제어 권한을 가진

컨테이너가 적절한시점에 객체를 만들고 그안의 메소드를 호출한다.

객체 생명관리, 흐름제어를 제 3자(스프링컨테이너)에게 위임하는 하는방식

 

AOP란 무엇인가?

- 관점지향 프로그래밍.

핵심 비즈니스 로직과 관점지향적인 로직을 따로 두자 관리하자 라는방식 

 

 

POJO는 무엇인가?

POJO(Plain Old Java Object)는 오래된 방식의 간단한 자바 오브젝트라는 말로, 스프링 전의 프레임워크 등이 무거운 객체를 만드는 것에 반발해서 사용하게 된 용어이다. 

스프링은 객체 간의 관계를 구성할 때 별도의 API를 사용하지 않는  POJO(Plain Old Java Object) 구성으로 제작이 가능하다. 

 

maven에 대해 설명하시오

maven은 프로젝트 관리 도구로 프로젝트의 모든 단계에 사용하는 개발 도구이지만, 가장 많이 사용되는 용도는 프로젝트에 필요한 라이브러리를 자동으로 관리해주는 빌드 도구이다. 필요한 라이브러리 jar파일을 자동으로 다운 받을 수 있다.

Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구로 컴파일과 빌드를 동시에 수행 등 다양한 기능을 한다.

 

mybatis의 역할은 무엇인가?

mybatis는 개발자가 지정한 SQL, 저장프로시저, 매핑을 지원하는 프레임워크.

이러한 연결 프로그램으로 인해 프로그램 소스코드에서 SQL 문장을 분리하여 별도의 XML 파일로 저장하고 이 둘을 서로 연결 시켜주는 방식으로 작동한다. 

 

 

 

Spring MVC 구성요소에 대해 설명하시오

Dispatcherservlet

  • 클라이언트의 요청을 전달 받아 컨트롤러에게 요청을 전달하고 컨트롤러가 리턴할 결과 값을 view에게 전달하여 알맞은 응답을 하도록 하는 것
  • 클라이언트의 요청을 중앙에서 처리하는 스프링 MVC의 핵심 구성 요소
  • web.xml에 한개 이상의 DispatcherServlet을 설정한다.

HandlerMapping

  • 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정

Controller

  • 클라이언트의 요청을 처리한 뒤 그 결과를 DispatcherServlet에게 알려준다.

ModelAndView

  • 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담아 놓는 세트

ViewResolver

  • 컨트롤러의 처리 결과를 생성할 뷰를 결정

View

  • 컨트롤러에서 리턴 받은 처리 결과를 화면에 출력한다.

 

 

 

Spring 기본 환경 설정 파일 및 기능 설명하시오

[파일] root-context.xml : 공통빈을 설정하는곳, view 제외 빈 설정(Dao 등)

[파일] appServlet 폴더 내의 servlet-context.xml

        servlet 요청과 관련된 객체 정의 파일

        view페이지 경로 및 파일명 지정

        bean 설정(베이스 패키지 하위 모든 어노테이션 스캔하여 빈 등록 등)

[파일] web.xml : 환경설정 부분, 배포 서술자,

                     서블릿 이름을 설정하고, 패턴을 설정한다. (.do 패턴 등)

                     filter를 활용하여 encodingFilter 를 추가하여 한글이 깨지지 않도록 설정하기도 한다.

                     각 에러 코드별 error-page를 설정할 수 있다.

                     웹 애플리케이션 요청 시 시작파일을 지정할 수 있다. <welcome-file-list>

[파일] pom.xml : Maven 설정 파일 / 필요한 라이브러리 다운 받는 경우 사용

 

 

REST 서비스가 무엇인가?

Representational State Transfer 자원을 이름으로 구분하여 정보를 주고 받는 것

네트워크 상에서 클라이언트와 서버 사이의 통신 방법 중 하나이다. 

XML 파일로 된 웹페이지를 읽어 원하는 정보를 수집하는 기능으로 해당 페이지의 URI만 알면 웹 브라우저로 읽어 정보를 얻을 수 있다. 

 

 

참고 : developsd.tistory.com/106