IoC(제어의 역전)
제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.
즉, 객체의 생성과 관리를 개발자가 하는 것이 아닌 프레임워크가 대신한다.
[클래스 A에서 new 키워드로 클래스 B의 객체 생성]
public class A {
b = new B();
}
[코드에서 객체를 생성하지 않음, 어디선가 받아온 객체를 b에 할당]
public class A {
private B b;
}
다른 곳에서 받아와서 사용한다. 직접 생성하는 것이 아니다.
외부의 객체를 관리하는 주체를 스프링 컨테이너라고 한다.
DI(의존성 주입)
DI는 어떤 클래스가 다른 클래스에 의존한다는 말이다.
public class A {
@Autowired
B b;
}
위 코드는 외부에서 객체를 주입받고 있다. 직접 객체를 생성하지 않는다.
@Autowired : 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할
빈 : 스프링 컨테이너가 생성하고 관리하는 객체
위 코드에서 @Autowired로 주입받은 B 객체가 빈이다.
스프링은 빈을 스프링 컨테이너에 등록하기 위해 XML 파일에서 설정하거나, Annotation으로 등록하는 방법을 제공한다.
클래스를 빈으로 등록하려면 class 위에 @Component를 작성하면 된다.
AOP(관점 지향 프로그래밍)
프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는 것
핵심 관점 : 소프트웨어 시스템의 주요 기능이나 핵심 비즈니스 로직 (ex. 계좌 이체, 고객 관리)
부가 관점 : 핵심 관점 이외 기능, 시스템 전반에 걸쳐 중복되거나 공통적 기능 (ex. 로깅, 데이터베이스 연결)
AOP를 통해 프로그래머는 핵심 관점 코드에만 집중할 수 있고, 프로그램의 변경과 확장에도 유연한 대처가 가능하다.
PSA(이식 가능한 서비스 추상화)
Portable Service Abstraction
스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스
스프링에서 데이터베이스에 접근하기 위한 기술은 JPA, MyBatis, JDBC 등이 있다.
어떤 기술을 사용하든 일관된 방식으로 데이터베이스에 접근하도록 인터페이스를 지원한다.
출처 : 스프링 부트 3 백엔드 개발자 되기 - 자바 편
'Spring' 카테고리의 다른 글
서버 템플릿 엔진 - Handlebars (0) | 2023.04.26 |
---|---|
TestContainers (0) | 2023.04.23 |
객체지향쿼리, JPQL (0) | 2022.12.20 |
Spring MVC 동작순서 (0) | 2022.11.21 |
Front Controller 패턴 특징 (0) | 2022.11.07 |