본문 바로가기
Java Spring/MVC

[Spring] Spring과 Spring boot 간단하게 알아보기

by GGShin 2022. 6. 16.

Spring Framework와 Spring boot란?

Java Spring이라고 불리는 Spring Framework는 Java 기반의 웹 애플리케이션을 개발하는데 필요한 Framework입니다.

 

Spring FW 이전 초창기 웹 애플리케이션 개발 시에 JSP(Java Server Page)를 사용했습니다. JSP는 프론트 사이드와 백 엔드 사이드의 코드가 한데 섞여 있어 유지보수가 굉장히 어려웠다고 합니다. 

또 다른 방법으로는 Servlet이 있습니다. Java 코드와 client 코드가 분리되기는 했지만 구현해주어야 하는 코드의 양이 적지 않았습니다.

 

이러한 이전 방식의 단점들이 Spring FW가 등장하면서 많이 보완되었습니다. Client의 요청에 담긴 데이터를 꺼내오는 것, 캐릭터셋 지정 등의 작업을 Spring이 처리해주어 개발자의 업무가 줄어들게 되었습니다. 

그럼에도 Spring 기반의 애플리케이션 기본 구조 설정은 복잡했고 이를 보완하기 위해 또 등장한 것이 바로 Spring boot 입니다. 

Spring boot를 이용하여 기본 구조 설정 코드가 훨씬 간결해지게 되었고 덕분에 개발자들은 핵심 비즈니스 로직에 더 집중할 수 있게 되었습니다. 

 

Spring Framework의 핵심

Spring Framework는 Dependency Injection(DI) Framework 입니다.

의존성 주입을 통해 loose coupling을 만들고 애플리케이션 코드를 유연하게 구성하도록 해줍니다. 

 

DI는 Spring이 해주고, 개발자는 Spring이 다루어야 하는 objects와 dependencies를 Spring에게 알려주면 되는 것입니다. 

Spring에게 알려줄 때는 Annotation을 통해서 알려주게 됩니다. 

 

자주 등장하는 용어

1. Beans(빈)

: Spring이 관리(생성, 소멸 등)하는 Instance들을 bean이라고 부릅니다. 

 

2. Auto wiring

: Spring이 의존 관계를 확인하는 과정을 의미합니다. 

 

3. Dependency Injection

: 느슨한 결합을 위해 Constructor나 setter를 사용하여 외부에서 DI를 해주게 됩니다. 

 

4. Inversion of Control

: Spring이 dependency instance를 생성하는 권한을 가지고 있는 상황을 의미합니다. 개발자가 생성하는 것이 아니라 Spring이 생성하는 권한을 위임받게 됩니다. 

 

5. IOC Container

: IOC가 이루어지는 모든 것을 통칭하여 부르는 용어 입니다. 보통 Application context를 의미합니다. 

 

6. Application Context (== Spring Container)

: Beans의 생성(인스턴스화), 구성, life cycle, removal까지 관리되는 영역입니다. Spring의 모든 코어 로직이 이루어지는 공간입니다. 

  • Spring container는 XML로 만들 수 있지만 Spring Boot를 사용하면서 거의 사용하지 않게 됨
  • 서로다른 beans를 연결하는 역할을 함
  • 객체 간의 의존성을 낮추기 위해 Spring container를 사용

 

이 내용들로 Spring의 모든 것을 설명하지는 못하지만 

오히려 정보가 너무 많아 혼란스러운 것을 좀 막기 위해 핵심적인 내용들만 간추려서 작성해보았습니다. 

Spring triangle이라는 개념도 핵심적인 내용이니 같이 알아보면 더욱 좋을 것 같습니다!

반응형