** 한국항공대학교 [카카오엔터테인먼트 개발자가 알려주는 백엔드 프로그래밍 특강] 을 참고하여 작성한 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도 존재한다.
++ 이부분에 대해서는 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 |