Spring
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크.
- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공.
- 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술.
Feature_List
- Bean
- IoC
- DI
- AOP
Bean
- POJO(Plain Old Java Object)
- 자바 객체
- 주로 XML파일에 다음과 같이 정의한다.
<bean id="..." class="..."></bean>
IoC
- Inversion of Control(제어의 역전)
- 스프링 컨트롤러가 객체의 생명 주기를 관리
- 컨트롤의 제어권이 사용자가 아니라 프레임워크가 필요에 따라 스프링에서 사용자의 코드를 호출
DI
- Dependency Injection(의존성 주입)
- 객체를 직접 생성하지 않고 외부에서 생성한 후 주입
- @autowired 등으로 bean을 등록하여 사용 가능
AOP
- Aspect Oriented Programming(관점 지향 프로그래밍)
- 핵심적인 관점, 부가적인 관점으로 각 관점을 기준으로 로직을 모듈화
- 주요 개념
- Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화
- Target : Aspect를 적용하는 곳 (클래스, 메서드 .. ) / 적용할 위치를 다음과 같은 어노테이션 이용 설정가능
- @Before (이전) : 어드바이스 타겟 메소드가 호출되기 전에 어드바이스 기능을 수행
- @After (이후) : 타겟 메소드의 결과에 관계없이(즉 성공, 예외 관계없이) 타겟 메소드가 완료 되면 어드바이스 기능을 수행
- @AfterReturning (정상적 반환 이후)타겟 메소드가 성공적으로 결과값을 반환 후에 어드바이스 기능을 수행
- @AfterThrowing (예외 발생 이후) : 타겟 메소드가 수행 중 예외를 던지게 되면 어드바이스 기능을 수행
- @Around (메소드 실행 전후) : 어드바이스가 타겟 메소드를 감싸서 타겟 메소드 호출전과 후에 어드바이스 기능을 수행
-
Advice : 실질적인 부가기능을 담은 구현체
-
JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양 한 시점에 적용가능
- PointCut : JointPoint의 정의한 것. 구체적으로 Advice가 실행될 지점을 정할 수 있음