** 엔터프라이즈 애플리케이션 : 대규모의 복잡한 데이터를 관리하는 애플리케이션
많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요
-> 스프링 프레임워크는 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구
# 스프링 부트
- 톰캣, 제티, 언더토우 같은 와스가 내장되어 있어서 따로 설치하지 않아도 독립적으로 실행 가능
- 빌드 구성을 단순화하는 스프링 부트 스타터 제공
- XML 설정하지 않고 자바 코드로 모두 작성 가능
- JAR 이용해 자바 옵션만으로 배포 가능
- 애플리케이션의 모니터링 및 관리 도구인 스프링 액츄에이터 제공
# 제어의 역전IoC과 의존성 주입DI
- IoC(Inversion of Control)
public class A {
b = new B();
}
에서
public class A{
private B b; // 코드에서 객체를 생성하지 않음, 어디선가 받아온 객체를 b에 할당
}
- DI(Dependency Injection) : 어떤 클래스가 다른 클래스에 의존한다는 뜻
@Autowired 라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 함
*빈은 스프링 컨테이너에서 관리하는 객체를 말함
# 빈과 스프링 컨테이너
- 스프링 컨테이너
빈을 생성하고 관리함. 애너테이션을 사용해 빈을 주입받을 수 있게 DI지원
- 빈
앞의 B가 빈 : 스프링은 빈을 스프링 컨테이너에 등록하기 위해 XML 파일 설정, 애너테이션 추가 등의 방법 제공
ex) MyBean이라는 클래스에 @Component 애너테이션을 붙이면 MyBran 클래스가 빈으로 등록됨
스프링에서 제공해주는 객체라고 생각하면 됨
# 관점 지향 프로그래밍
* AOP : 프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는것을 의미함
# 이식 가능한 서비스 추상화
*PSA : Portable Service Abstraction 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스
-> 어떤 기술을 사용하든 일관된 방식으로 데이터베이스에 접근하도록 인터페이스에 지원하는것과 같음
객체간의 의존관계를 설정하고, 핵심 관점과 부가 로직을 분리해 개발하며, 추상화된 서비스들을 다양한 서비스들을 일관된 방식으로 사용하도록 함
@출처
스프링 부트3 백엔드 개발자 되기 자바편