TIL

34_Step : spring과 spring boot

afeel91 2022. 8. 25. 10:35

java 언어는 이를 메인으로 사용하고 있는 기업들의 수도 많아 수요가 많은 편이다. 따라서 20여년 가까이 개발자들에 의해 생성되었던 java언어 관련한 정보와 소스가 방대하고 할 수 있을 정도로 많다. 때문에 본인에게 필요한 정보와 코드를 골라 적재적소에 사용하는 스킬도 중요하다고 볼 수 있다.

spring

개발자들이 20여년 가까이 java언어를 쓰면서 지속적으로 발전시켜왔던 프레임워크 중 하나로, java언어를 사용하면서 불편했던 부분을 편리하게 개선하여 일의 효율을 올리도록 만들어졌다. 같은 일을 여러 번하는 행동과 모든 일처리에 코드를 작성하는 사람이 개입해야 하는 행동에 대한 빈도수를 낮춰주면 효율이 많이 올라가는데 스프링이 그런 역할을 맡아서 처리해주기 때문에 spring 프레임워크를 많이 사용한다.

 

spring을 사용하기 위해서는 DI와 IoC를 알아야 하는데 이는 spring의 가장 큰 특징이라고 볼 수 있다.

 

DI  : 의존성 주입(Dependency Injection)

  • A객체에서 B객체의 기능이 필요할 때 우리는 A객체 내에 B객체를 생성하여 사용했었다. 이럴 경우 발생하는 큰 문제점 중에 하나가 객체간에 결합력이 너무 강하다는 것이다. A객체를 수정하려고 보면 B객체와 강하게 연결되어 있어 B객체 또한 수정해줘야 하는 번거로움이 생긴다. 이러한 문제점 때문에 A객체 내부가 아닌 객체 외부에 생성하여 필요시 B객체의 기능을 A객체에 주입시켜주는 방식으로 객체간의 결합력을 약화시켜 수정 및 보완에 용이하게 만들 수 있다. DI를 활용하면 객체끼리 영향은 주지만 결합력은 약하기 때문에 서로에 대한 의존성을 낮추게 되어 효율적인 일처리를 할 수 있게 된다.

IoC  : 제어의역전(Inversion of Control)

  • 프로그램을 자세히 보면 구동되는 흐름이 있다. 그 흐름은 객체간에 데이터를 주고 받는 방향과 방식에 따라 만들어 지는데 이때 DI에서 말했듯이 객체간에 결합력이 생기게 된다. 결합력은 약할수록 좋고, 결합력을 약하게 해주는 역할을 하는게 IoC이다.
  • 위의 DI 설명에서처럼 A객체에서 B객체의 기능을 사용하고 싶을 때 A객체 내부에 B객체를 생성하는 것이 아니라 spring이 생성하고 관리하는 객체를 만들어 A객체 내부에 주입해주면서 A객체의 요구를 충족시켜 주고, 객체간의 의존성에 대한 제어를 spring이 가져오면서 흐름을 제어하는 방식이 IoC이다.

프로그램의 진행 흐름

DI와 IoC를 잘 활용하는 것이 객체지향 프로그래밍이다. 이는 객체를 모듈화하여 유연하게 프로그램이 돌아가도록 하고, 유지보수에 매우 용이하다는 특징을 가지고 있다.

 

 

spring boot

java언어를 좀 더 쉽고 편리하게 만든게 spring 프레임워크였는데 spring도 시간이 지날수록 점점 더 방대해지며 기능들이 많아지면서 다루기 어려워졌다. 이때 구원투수로 나온게 spring boot이다. 쉽게말해 spirng을 좀 더 쉽게 사용할 수 있도록 만든 프레임워크라고 생각하면 된다. 

 

1. 세팅의 어려움

spring은 편리해졌다고는 하나 문제점이 많이 있었다. 그 중에 하나가 바로 세팅 관련 문제이다. 어떤 프로그램을 만들기 위해 그에 맞는 세팅을 하고 진행해야 하는데 spring은 세팅하기가 매우 어려웠다. 세팅을 어떻게 하냐에 따라 사용할 수 있는 기능이 다른데 이게 어렵고 복잡해서 개발자들이 많이 힘들었다.

 

2. 의존성 관리

객체간의 의존성은 꼭 필요한 경우가 아니면 낮게 유지 하려고 노력해야 하지만 버전이 올라가면서 호환이 되는 것과 안되는 것이 생기기 시작했고, 이를 구분해가며 추가하고 분리해놔야 했다. 때문에 관리가 복잡해지기 시작했고, 개발 속도를 저하시키거나 오류 등의 문제를 야기하는 상황이 발생한다.

 

이 밖에도 많은 문제점이 있던 spring에서 spring boot가 나오면서 개발자가 비지니스 로직을 짜는 일에 몰두할 수 있도록 다른 부분을 알아서 자동화하여 지원해주는 프레임워크가 바로 spring boot이다.