정리노트

[스프링부트] IoC, DI, 빈, 스프링 컨테이너, AOP, PSA 본문

프로그래밍/Spring

[스프링부트] IoC, DI, 빈, 스프링 컨테이너, AOP, PSA

Rolen 2024. 10. 1. 22:20
  • IoC (Inversion of Control) / 직역: 제어의 역전

1. 자바에서는 객체를 사용하기 위해서 객체를 직접 생성한다.

Public class ExJava() {
	CrInstance a = new CrInstance();
}

2. IoC는 직접 생성, 제어를 하는 것이 아니라 외부(스프링 컨테이너)에서 관리하는 객체를 가져와서 사용하는 것

Public class ExJava() {
	public CrInstance a;	// 쉽게 생각한다면 변수를 생성하는 것과 같다.
}

 

  • DI (Dependency Injection) / 직역: 의존성 주입

어떠한 클래스가 다른 클래스에 의존하고 있다는 것으로 객체를 직접 생성하지 않고 스프링 컨테이너에게 넘겨 받게 되는 것을 의미한다. + IoC 를 위한 것

Public class ExJava() {
	@Autowired	// 객체를 받는다.
	CrInstance a;	// 쉽게 생각한다면 변수를 생성하는 것과 같다.
}

위의 두번째 코드에서처럼 주입받는 객체, 클래스 를 빈이라고 한다.

빈을 스프링 컨테이너에 등록하고 사용하는데 방법은 다영하게 있다.

그 중 한가지는 클래스 앞에 어노테이션 @Component 를 작성하면 된다.

빈은 쉽게 생각해서 스프링에서 제공해주는 객체라고 생각하면 된다.

@Component
public Class A {
}
  • 스프링 컨테이너

빈의 Lifecycle을 관리하고 빈을 넘길 수 있게 DI를 지원한다.

  • 관점 지향 프로그래밍

AOP (Aspect Oriented Programming)

핵심 관점, 부가 관점으로 나누어 모듈화 하는 것을 의미.

간단한 예시로, 전화발신을 위한 프로그램이 있을 때,

전화발신은 핵심 관점이고 이를 위한 번호 확인, 통신 연결 은 부가관점이 된다.

  • PSA

Portable Service Abstraction /  일관된 서비스 추상화

다양한 기술들을 추상화하고 기술들을 유연하게 사용이 가능하도록 하는 것.

 

728x90

'프로그래밍 > Spring' 카테고리의 다른 글

[스프링부트] DAO, DTO  (0) 2025.03.27
[스프링부트] 테스트 도구 .함수  (0) 2024.10.04