스프링부트3 백엔드 개발자되기(AWS)

스프링부트3 백엔드 개발자되기 개념정리2

chojdsj 2023. 11. 8. 11:43
728x90

 

 

  • 스프링과 스프링 부트

 

 

 

 

 

스프링 부트의 주요 특징


* 톰캣, 제티, 언더토우 같은 웹 애플리케이션 서버(Web Application Server, WAS)가 내장되어 있어서 따로 설치를 하지 않아도 독립적으로 실행할 수 있습니다.

* 빌드 구성을 단순화하는 스프링 부트 스타터를 제공합니다.

* XML 설정을 하지 않고 자바 코드로 모두 작성할 수 있습니다.

* JAR를 이용해서 자바 옵션만으로도 배포가 가능합니다.

* 애플리케이션의 모니터링 및 관리 도구인 스프링 액츄에이터(spring actuator)를 제공합니다.

 

 

 

 

 

스프링과 스프링 부트의 차이

 

 

- 스프링 부트는 스프링에 속한 도구입니다. 단 스프링과 스프링 부트는 개발할 때의 몇가지 차이점이 존재합니다.

 

 

 

  • 차이점 1. 구성의 차이

- 스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야 합니다.

 

 하지만 스프링 부트스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드하므로 수동으로 개발 환경을 구성할 필요가 없습니다.

 

 

 

 

  • 차이점 2. 내장 WAS의 유무

- 스프링 애플리케이션은 일반적으로 톰캣과 같은 WAS에서 배포됩니다.

 

 하지만 스프링 부트WAS를 자체적으로 가지고 있습니다. 그래서 jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션을 실행할 수 있습니다.

 

 

 

 

 

 

제어의 역전 ( IoC)

 

 

- IoC는 Inversion of Control을 줄인 표현입니다. 직역하면 제어의 역전입니다.

 

- 제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말합니다.

 

 

 

 

 

 

DI

 

 

- 스프링에서는 객체들을 관리하기 위해 제어의 역전을 사용합니다. 그리고 제어의 역전을 구현하기 위해 사용하는 방법이 DI입니다.

 

- DI는 Dependency Injection을 줄인 표현이고, 직역하면 의존성 주입입니다. DI는 어떤 클래스가 다른 클래스에 의존한다는 뜻입니다. 

 

 

 

 

 

 

 

 

빈과 스프링 컨테이너

 

 

 

- 스프링은 스프링 컨테이너를 제공합니다. 스프링 컨테이너빈을 생성하고 관리합니다. 즉, 빈이 생성되고 소멸되기까지의 생명주기를 이 스프링 컨테이너가 관리하는 것입니다.

 

- 개발자가 @Autowired같은 애너테이션을 사용해 빈을 주입받을 수 있게 DI를 지원하기도 합니다.

 

 

 

 

* 빈이란 ?

 

- 스프링 컨테이너가 생성하고 관리하는 객체입니다. 

 

- 빈을 스프링 컨테이너에 등록하기 위해 XML 파일 설정, 애너테이션 추가 등의 방법을 제공합니다.

 

ex) MyBean이라는 클래스에 @Component 애너테이션을 붙이면 MyBean 클래스가 빈으로 등록됩니다.

 

-> 이후 스프링 컨테이너에서 이 클래스를 관리합니다. 이때 빈의 이름은 클래스 이름의 첫 글자를 소문자로 바꿔 관리하기 때문에 빈 이름은 myBean이 됩니다.

 

 

 

 

관점 지향 프로그래밍 (AOP)

 

 

- AOP는 Aspect Oriented Programming을 줄인 표현으로, 관점 지향 프로그래밍입니다. 의미를 풀어 설명하자면 프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준을 모듈화 하는것을 의미합니다.

 

 

 

 

 

 

이식 가능한 서비스 추상화 (PSA)

 

 

 

- PSA는 Portable Service Abstraction을 줄인 표현입니다. 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스를 말합니다.

 

 

 

 

 

 

스프링 핵심 4가지

* IoC(제어의 역전) : 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 대신 하는 것.

* DI(의존성 주입) : 외부에서 객체를 주입받아 사용하는 것

* AOP(관점 지향 프로그래밍) : 프로그래밍을 할 때 핵심 관점과 부가 관점을 나누어서 개발하는 것.

* PSA(추상화) : 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것.