pat coding
[Spring] 스프링 개념정리 본문
1. 스프링 프레임워크란?
자바 웹 애플리케이션 개발을 위한 오픈소스 프레임워크
2. 특징?
1. 의존성 주입(DI)
- IOC Container 가 개발자 대신 xml 파일에 정의된 대로 Bean 객체를 생성하고 의존성을 대신 주입하는 것
2. 제어 역행(IOC)
-서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행하는 방법
-사용자가 작성한 메타데이터(xml 또는 @(어노테이션))에 따라 Bean 클래스를 생성 및 관리 하는 Spring의 핵심 컴포넌트
1. XML 파일 기술
- 코드와 의존성 주입하는 부분 분리해서 유지보수성을 높일 수 있다.
- 시스템이 거대해지면 XML파일이 너무 많아서 오히려 유지보수가 어려워짐
2. @(어노테이션) 사용
- 직관적인 코드 작성 가능, 개발의 생산성 증대
3. 관점 지향(AOP)
- 보안, 로그, 트랜잭션과 같이 반드시 처리가 필요한 부분을 별도 모듈로 분리
- 중복 코드를 줄이고 핵심 비즈니스 로직에만 집중하며 원하는 관심사의 유지보수가 수월한 코드 구성에 용이함
- 용어정리
1. Target
- 부가 기능을 부여할 대상을 의미
2. Aspect
- 부가기능 모듈
3. Advice
- Aspect가 무엇을 언제 할지를 정의
- 부가기능을 담은 구현체를 의미
4. JoinPoint
- Advice가 적용 될 수 있는 위치
5. PointCut
- 부가기능이 적용될 메소드를 선정하는 방법
6. Proxy
- 타겟에 대한 요청을 대신 받아 메소드 실행의 전처리, 후처리를 실행
7. Weaving
- pointcut에 의해서 joinpoint에 Advice를 삽입하는 과정
4. POJO
- 특정 규약과 환경에 종속되지 않는다.
- 코드의 간결함, 자동화 테스트에 유리
3. 스프링을 사용하는 이유?
- 복잡한 엔터프라이즈 시스템을 빠르게 작성 가능
- 의존성 주입을 통한 유지보수에 용이하다는 특징을 가지고 있다.
'Interview' 카테고리의 다른 글
디자인패턴이란? (1) | 2020.05.22 |
---|---|
[RUBY & Rails]루비 와 레일즈 면접 예상질문 정리! (1) | 2019.11.15 |
[Spring] AOP(관점지향)와 OOP(객체지향)의 차이? (0) | 2019.11.14 |
[JAVA] 자바 신입 면접 질문 모음! (0) | 2019.11.13 |