스프링 스터디(with 큐시즘 개발팀) - 1주차

PM/iOS Developer KimKU·2022년 9월 12일
0

Spring Study

목록 보기
1/4

ㅇ

현재 하고있는 대외활동인 큐시즘에서 개발팀끼리 스터디를 진행한다.

1. 스프링이란 무엇인가?

자바 엔터프라이즈 애플리케이션 개발에 사용된 프레임워크이다. 즉, 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 틀과 공통 프로그래밍 모델, 기술 API 등을 제공한다.

2. 스프링과 스프링 부트의 차이는 무엇인가?

스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡하다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 스프링 부트이다.

스프링 부트와 스프링 프레임워크와 몇 가지 면에서 차이가 있다.

1. 스프링 부트는 Embed Tomcat을 사용하기 때문에 따로 Tomcat을 설치하거나 매번 비번 관리를 해주어야 하는 수고로움을 덜어준다.

2. 스프링 프레임워크는 각각 dependency들의 호환되는 버전을 일일이 맞추어야 했고, 때문에 하나의 버전을 올리고자 하면 다른 dependency에 까지 영향을 미쳐 version 관리에 어려움이 많았다. 하지만 스프링 부트는 starter가 대부분의 dependency를 관리해주기 때문에 이러한 걱정을 많이 덜게 되었다.

3. XML 설정을 하지 않아도 된다.

4. jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.

3. 프레임워크와 라이브러리의 차이는 무엇인가?

프레임워크는 애플리케이션을 개발하는데 있어 기본적으로 필요한 구조와 구성을 갖추고 있어 개발자가 기능 구현에 집중할 수 있도록 한다. 프레임워크에서 뼈대를 제공하고 그 위에 개발자가 코드를 올려 동작하게끔 한다. 쉽게 비유하자면 "설계는 내가 할게, 너는 구현만 해" 라고 보면 될 것 같다.

라이브러리는 개발을 하기 위해 필요한 것들을 미리 구현해놓은 대상, 도구이다. 재사용이 가능한 기능을 미리 구현해놓고 필요한 곳에서 호출하여 사용할 수 있도록 만들어진 집합들을 말한다.
ㄴ

프레임워크는 틀이고 그 안에서 재사용이 가능하도록 만들어진 도구를 라이브러리라고 한다.

프레임워크와 라이브러리의 가장 큰 차이점은 흐름을 누가 가지고 있느냐에 있다. 프레임워크는 스스로 흐름을 가지고 있어 사용자로 하여금 코드를 연결할 공간을 강제하지만 라이브러리를 사용할 때에는 사용자에게 흐름을 직접 제어한다. 어디서, 언제 호출할지 사용자가 결정짓게 되는 것이다.

4.스프링 프레임워크의 특징은 무엇인가?

POJO(Plain Old Java Object) 기반의 구성

스프링은 내부적으로 별도의 API를 사용하지 않고, 일반적인 JAVA 코드를 이용하여 객ㅊ를 구성하는 방식 그대로 사용하고 있다. 이것은 코드를 개발할 때, 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다 라는 것을 의미한다.

트랜잭션의 지원

DB를 연동하여 사용할 때 반드시 신경써야하는 부분은 트랜젝션 부분이다. 상황에 따라 여러 코드를 작업해줘야 하는데, 스프링에서는 Annotaion이나 XML로 설정할 수 있도록 지원해준다.

DI(Dependency Injection, 의존성 주입)

스프링에서는 'Application Context' 라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해 주는 구조이다. 따라서 스프링을 사용하면 객체를 분리해서 생성하고, 이런 객체들을 엮는 작업을 하게 된다.

AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)

흩어진 공통 기능들을 모듈화 하고, 쓰이는 곳에 필요할 때 연결함으로써 유지보수 혹은 재사용성을 더욱 높이는 관점 지향 프로그래밍을 지원한다.

5. 스프링 프레임워크를 배우는 이유는 무엇인가(개인적)?

스프링 프레임워크를 시작하게 된 이유는 간단하다. 선배들과 함께 진행하는 프로젝트에서 Spring Boot를 사용한다고 하여 나도 같이 시작했다. 정말 아무것도 모르고 시작했다. Spring이 뭔지, Spring Boot랑 뭐가 다른지도 모르고 정말 무식하게 뛰어들었다. 처음으로 프로젝트를 진행하게된 프레임워크라 이젠 익숙해졌고 어떤 프로젝트를 진행해도 스프링이 먼저 떠오른다.

아직 배우고 사용한 이유는 다른 프레임워크를 많이 써보지 않아 잘 모르겠다.

6. 스프링 프레임워크 외에 다른 프레임워크와의 차별점은?

확장성이라고 생각한다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있는 스프링에서 사용되는 라이브러리를 별도로 분리하기에도 용이하다.

profile
With passion and honesty

0개의 댓글