<핵심 키워드>
- IoC(제어의 역전)
- DI(의존성 주입)
- AOP(관점 지향 프로그래밍)
- PSA(이식 가능한 서비스 추상화)
2.1 스프링과 스프링부트
<스프링 vs 스프링부트> 차이점
Spring | Spring boot | |
설정 파일 구성 | 수동 구성 | 자동 구성 |
내장 WAS 유무 (서버) | 내장 X | 내장 O (톰캣, 제티, 언더토우) |
목적 | 엔터프라이즈 애플리케이션 개발 | 스프링의 개발 효율 높이기 |
XML | 일부 파일은 XML로 직접 생성하고 관리 | 사용하지 않음 |
인메모리 데이터베이스 지원 | 지원 X | 자동 설정 지원 O |
2.2 스프링 콘셉트
2.2.1 제어의 역전(IoC)와 의존성 주입(DI)
- 제어의 역전(IoC)
-> Inversion of Control을 줄인 표현
-> 객체를 직접 생성하는 것이 아닌, 다른 곳에서 생성된 객체를 가져와 사용
public class A {
private B b;
}
▲ 스프링 컨테이너가 객체를 관리하는 예
- 의존성 주입(DI)
-> Dependency Injection을 줄인 표현
-> 어떤 클래스가 다른 클래스에 의존한다는 뜻
-> 스프링 컨테이너에서 객체를 주입받아 사용
public calss A {
// A에서 B를 주입받음
@Autowired
B b;
}
▲ 객체를 주입받는 모습 예 (Spring 컨테이너가 B라는 객체를 대신 만들어준다.)
2.2.2 빈과 스프링 컨테이너
- 스프링 컨테이너란?
-> 빈을 생성하고 관리하는 역할
-> 빈의 생성주기를 스프링 컨테이너에서 관리
-> @Autowire 같은 어노테이션을 사용해 받을 수 있도록 관리
- 빈이란?
-> 스프링 컨테이너가 생성하고 관리하는 객체 (스프링의 객체라고 생각하면 된다)
-> 스프링이 빈을 등록하는 방법은 여러 방법이 있음 (ex. XML 파일 설정, @Component 등...)
-> 빈의 이름은 클래스 이름의 첫 글자를 소문자로 바꿔 관리
@Component // 클래스 MyBean을 빈으로 등록
public calss MyBean {
}
▲ 클래스를 빈으로 등록하는 방법 예시
2.2.3 관점 지향 프로그래밍(AOP - Aspect Oriented Programming)
- 프로그래밍에 대한 관심을 [핵심관점/부가 관점]으로 나눠서 관심 기준을 모듈화하는 것을 의미
- 장점 : 핵심 관점 코드에만 집중할 수 있게 되고, 프로그램의 변경 및 확장에도 유연하게 대응 가능
2.2.4 이식 가능한 서비스 추상화(PSA - Portable Service Abstraction)
- 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스
- 어떤 기술을 사용하던 일관된 방식(기존 코드)을 그대로 사용 가능하게 하는 방식
<스프링 핵심 4가지 - 한 줄 요약> - IoC : 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 대신하는 것 - DI : 외부에서 객체를 주입받아 사용하는 것 - AOP : 프로그래밍을 할 때 핵심 관점과 부가 관점을 나누어서 개발하는 것 - PSA : 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것 |
'Spring boot > 스프링 부트 3 백엔드 개발자 되기(자바편)' 카테고리의 다른 글
[4장] 스프링 부트 3와 테스트 (0) | 2023.07.25 |
---|---|
[3장] 스프링 부트3 구조 이해하기 (0) | 2023.07.25 |
[2장] 스프링 부트 3 시작하기(2) - 스프링 부트 3 예제 만들기 (0) | 2023.07.25 |
[1장] 자바 백엔드 개발자가 알아두면 좋은 지식 (0) | 2023.07.25 |
[0장] 개발 환경 구축하기 - 스프링 부트 3 프로젝트 만들기 (0) | 2023.07.25 |