Spring-Boot

스프링과 스프링 부트

겨르 2024. 3. 6. 23:25

** 엔터프라이즈 애플리케이션 : 대규모의 복잡한 데이터를 관리하는 애플리케이션

많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능과 안정성, 보안이 매우 중요

-> 스프링 프레임워크는 서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구

 

# 스프링 부트
- 톰캣, 제티, 언더토우 같은 와스가 내장되어 있어서 따로 설치하지 않아도 독립적으로 실행 가능
- 빌드 구성을 단순화하는 스프링 부트 스타터 제공
- 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 백엔드 개발자 되기 자바편