# Spring 이란?
- JAVA 웹 프레임워크 (자주 쓰일 만한 기능들을 한데 모아 놓은 클래스들의 모음)
- JAVA를 이용한 기술은 JSP, MyBatis, JPA 등 여러가지가 있는데 즉, Spring은 이 기술들을 사용하기 편하게한다.
- Spring은 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단화
- 오픈소스를 효율적으로 가져다 쓰기 좋은 구조
# Spring가 왜 필요한가, 장점
- 비지니스 로직에 집중가능
- 전체 구조를 다루는 프레임워크
- 다양한 프레임워크와의호환성
- 복잡한 트랜잭션을 어노테이션 혹은 Xml을 통해 설정하여 개발자가 매번 상황에 맞는 코드를 작성하지 않아도 된다.
# 하지만 단점은?
- 많은 기능을 가졌기 때문에 상당히 무겁다.
- 기능들을 습득하기위한 노력이 많이 필요하다.
- 긴 로딩시간
# Node vs Spring
https://well-made-codestory.tistory.com/31
# Spring 특징
1. IoC(Inversion of Control, 제어 반전)
- 객체 생명주기 관리를 개발자가 하는게 아닌 스프링이 대신 해주는것. -> 개발자의 실수 커버
- 즉, 제어권이 개발자가 아닌 IoC에게 있으며 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어하는 것
- Spring에서 의존성 객체를 만들어주고 필요한 곳에 넣어주어 기존에 사용자가 가졌던 제어권을 다른 주체에게 넘겨주는 것
2. DI(Dependency Injection, 의존성 주입)
- 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식
- 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다.
- 필요한 부분을 뺐다 꼈다 하면서 적절한 상황에 필요한 기능을 해낼 수 있다.
3. AOP(Aspect Object Programming, 관점 지향 프로그래밍)
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리
- 개발자가 비즈니스 로직에만 집중 할 수 있도록 반드시 처리가 필요한 부분(횡단 관심사 = cross-cutting concerns)을 모듈로 분리하는 프로그래밍의 패러다임을 의미
- 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법
4. POJO(Plain Old Java Object) 방식
- Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
- getter/setter를 가진 단순한 자바 오브젝트
- 객체간의 관계를 구성할 때, 별도의 API를 사용하지 않고 Java 코드를 이용하여 객체를 구성할 수 있음을 의미
# 결론 (★완전 중요★)
블로그글도 수도없이 읽어보고 유투브도 수도없이 봤지만 내가 내린 결론은 이거다.
- 과거 Spring의 장점이라고 내세운것들은 현재 다른 프레임워크에서도 충분히 보완이 되었다.
- 따라서 현시대에 어떤 언어를 써서 개발을 할지는 크게 중요치않다.
- 이 상황에서 Spring의 지나친 규격? 룰?들이 개발자 입장에서 너무 불편하며 구시대적으로 보인다.
- 하지만 우리나라 전자정부프레임워크가 자바 Spring으로 만들어져서 엄청난 Spring 서버들을 찍어냈었다.
- 이 때문에 거의 모든 대기업이 Spring을 사용하게되고 대규모 인원이 같이 작업하는데 용이하며 안정성있는 Spring을 지금에서야 굳이 다른걸로 바꿀 이유가 없다.
백엔드 개발자의 정점엔 언어가 그렇게 상관없다. 또, 정점에 있는 사람들은 하나의 언어만 하지 않을 가능성이 높다.
진정한 개발자라면 취업이라는 이유로 어떤 언어를 자신한테 억지로 끼워넣는것은 옳지 않으나 '대한민국에서 대기업 취업'을 하려면 되도록 Spring로 시작하는것이 좋다.
이미 다른 언어로 어느정도 공부를 했다면 굳이 바꿔서 노력을 들일 가치는 없다.
https://seolin.tistory.com/119 여기 글이 가장 정확한듯하다.
# Reference
https://jerryjerryjerry.tistory.com/62
https://jihoon2723.tistory.com/29
https://jaehoney.tistory.com/167
https://well-made-codestory.tistory.com/31
https://seolin.tistory.com/119
+ 각종 유튜브
'개발중 생기는 WHY' 카테고리의 다른 글
멀티 프로세스, 멀티 스레드 등 "멀티"의 변천사 (작성중) (0) | 2024.04.18 |
---|---|
웹과 앱을 하나의 백엔드 API로 운영할 수 없을까? (0) | 2023.04.28 |
Question Queue (0) | 2022.12.24 |
뛰어난 개발자가 되기위한 덕목 (0) | 2022.11.24 |