BACKEND/KAU BACKEND 특강

스프링 프레임워크

이-프 2023. 1. 27. 16:47

 ** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 post입니다.

 

스프링 프레임워크란?

자바 애플리케이션 개발을 위한 경량 프레임워크 

 

💡 '프레임워크'란?

기본적인 기능이 담겨있어서 개발할 때 도움을 주는 틀 

ex ) 중복되는 작업들, 이미 상용화 되있는 코드들 을 쉽게 가져다 쓸 수 있도록 모아놓은 것

 

💡 '경량'이란 ? 

프레임워크 코드가 적다는 의미 x 

프레임워크 외의 코드에 최소한의 영향만 준다는 의미 

 

제어의 역전 (Spring Inversion of Control, IoC)

프로그램의 흐름을 개발자가 아닌 외부에서 제어 및 관리해주는 것

 

만약 프레임워크 없이 개발을 한다면, 

객체의 생성, 설정, 초기화, 호출, 소멸 등을 모두 개발자가 직접 관리해야한다. 😩(최악이죠)

 

근데 프레임워크 사용한다 ?

그럼 이 모든 과정을 프레임워크가 대신해줄 수 있다. 그렇기 때문에 프레임워크는 개발에서 꽤나 큰 비중을 차지한다.

 

이처럼 개발자가 아닌 프레임워크(외부)에서 제어 및 관리를 해주는 설계 방법이 '제어의 역전'이라 한다.

 

개념적으로, 프레임워크제어의 역전이 되어있는 기술 이라고 할 수 있다. 

 

스프링 빈 (Spring Bean)

JAVA 코드를 보다보면 @Bean 이란 코드를 자주 봤을 것이다. 이에 대해 설명하겠다.

@로 표시하는 코드들을 Annotation이라 한다. 

 

++ 잠시, 설명하고 넘어가자면 

Annotation이란 ? 

뜻 그대로, '주석'이란 의미이다. 사실 코드 상에서는 '주석'의 의미보다 더 큰 기능을 한다. 

Java에서는 Annotation 기능을 자주 사용하는데, 클래스와 메소드에 추가하여 다양한 기능을 부여한다.

코드량을 줄일 수 있고, 유지보수가 쉬우며, 타인이 코드를 이해하기에 쉬워지기 때문에 자주 사용합니다.

 

 

스프링 빈은 스프링 컨테이너에 의해 관리되는 자바 객체이다. 

 

기존 Java 프로그래밍과 조금 다른 점인데,

기존의 Java 프로그래밍 - 새로 객체를 생성한 후 사용

Spring 프로그래밍 - Spring에 의해 생성되고 관리되는 Java 객체를 사용 = Bean

 

그렇기 때문에, new 연산자로 생성한 객체는 Bean이 아니다.

ApplicationContext.getBean()으로 얻어지는 객체가 Bean이다 !!

 

그렇다면 어덯게 Bean을 스프링 컨테이너에 등록할 수 있을까 ?

1. Component Scanning

@Component annotation을 사용하여 Bean을 등록한다.

@Data
@Component
public class Engine {
 private int cylinder;
 private int displacement;

 public void start() {
 // do someting
 }
}

 

@Service, @Repository, @Controller등 특별한 목적의 @Component annotation도 존재한다. 

출처 : dinfree/blog/스프링프레임워크

 

++ 이부분에 대해서는 Spring의 MVC 패턴에 대해 공부해봐야할 것 같다.

 

2. Bean 설정 파일에 직접 Bean 등록 

클래스에 @Configuration annotation을 붙이고

그 안에 @Bean annotation을 붙여 정의한다. 

@Configuration
public class CarPartConfig {
 @Bean
 public Engine engine() {
 return new Engine();
 }
}

이렇게 하면, engine()에서 리턴되는 객체가 컨테이너 안에 Bean으로 등록된다. 

 

 

이와 관련된 실습내용 (실습 1 & 실습 2)

<상품 서비스 제작>

https://github.com/YurimYang/KAU-Backend

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'BACKEND > KAU BACKEND 특강' 카테고리의 다른 글

Spring Persistence (영속성)  (0) 2023.02.03
백엔드 엔지니어링이란?  (1) 2023.01.20
웹 프로그래밍이란?  (0) 2023.01.20