스프링 기본 개념
- 스프링의 탄생 배경 : 기존의 EJB의 사용이 무겁고, 활용성이 떨어지는 이슈로 인해 POJO인 자바기반 스프링 프레임워크가 탄생하게 되었음
스프링은 인터페이스화된 부품들을 컨테이너(IOC)에서 생성 및 조립(DI)하는 것 의미함
- 특징 : 스프링 = DI(의존성 주입) + IOC(제어의 역전) + AOP(관점지향프로그램)
1) DI = 한 클래스에서 다른 클래스를 호출하는 식으로 서로 의존성을 맺는걸 의미한다.
1.직접 생성 (Java) - autowired, inject
2. Setter를 이용한 생성
3. Contructor를 이용한 생성
> 2, 3번처럼 IOC 컨테이너에 등록된 Bean 객체를 호출하여 주입할 수 있음 (= 외부에서 의존성 주입 가능)
2) IOC = 메소드나 객체의 호출 작업을 개발자가 아닌 외부에서 결정하는 것을 의미함
-> 의존성을 외부에 둠으로써 결합도를 낮추고 유연성, 가독성, 코드 중복등 유지보수가 편해짐 (스프링은 모든 의존성 객체를 싱글톤 패턴으로 생성함)
3) AOP = 개발시 사용되는 로깅 또는 세션같이 구현하고자 하는 기능과는 별개로 운영할 수 있는 부분을 모듈화하는걸 의미한다.
(중심에서 벗어나 새로운 관점으로 바라보는걸 관점지향프로그램 AOP라고 함)
1. Target - 모듈이 적용될 대상
2. Advice - 모듈이 구현된 구현체 (Aspect가 언제, 무엇을 할지는 정의)
3. JoinPoint - Advice가 적용될 위치
4. PointCut - JoinPoint가 적용될 메소드 중 부가 기능을 추가로 적용될 위치
5. Proxy - 타겟 대신에 클라이언트 요청을 받아오는 객체
6. Advisor - PointCut과 Advice를 하나씩 갖고 있는 객체 (AOP 기본)
7. Aspect - 부가기능이 정의된 Advice와 Advice가 적용될 PointCut의 조합
[샘플 코드]
- 빈 (Bean)
: 스프링 IOC 컨테이너가 관리하는 자바 객체를 의미함
(new 연산자로 생성하는 객체 X, ApplicationContext.getBean()으로 호출하는 객체 O)
1) Spring IOC 컨테이너에 빈을 등록하는 방법
1. Component Scanning
- @ComponentScan(해당 시점부터 Bean 스캔) 또는 @Component(해당 클래스 Bean 등록) 어노테이션으로 빈을 등록하는 방법
2. Bean 설정파일에 직접 Bean을 등록
'IT > Spring' 카테고리의 다른 글
스프링 부트 배치_springBoot batch (0) | 2020.08.10 |
---|