느릿느릿 프로그래밍
[Spring] 왜 스프링을 사용할까? 본문
웹페이지 공부를 위해 스프링부터 시작해보자! 하고 공부를 시작하다가 문득 궁금해졌다.
스프링은 왜 사용하는걸까?
남들 다 사용하고 좋대서 쓰긴 쓰는데 왜 쓰는지, 뭐가 좋은지, 어떤 경우에 제일 효과가 좋은지 등이 궁금해졌다.
1. Spring?
자바 기반의 경량급 애플리케이션 프레임워크.
2. Spring의 장점
유연함, 유지보수, 협업에서의 용이함이 제일 많이 나오는 키워드였다.
그렇다면 무엇이 스프링을 유연하고, 유지보수 및 협업에 용이하게 하는지 알아보자!
(1) DI(Dependency Injection)
->의존성 주입.
무슨 말인지 1도 모르겠다..
그래서 여기저기서 찾아보았다.
DI에서의 의존성은 객체간의 의존성을 의미한다.
클래스 A가 B에게 의존하고 있는 경우에 클래스 B가 수정되면 해당 의존 관계도 수정해주어야한다.
작은 프로그램에서 한두개 정도 수정하는거라면 간단하겠지만,
방대한 프로그램에서라면 매우 피곤해 질 것이다.
DI는 이러한 문제를 해결해준다.
제 3의 파일에서 객체를 생성해 전달해주는 방식으로, 객체간의 결합도를 낮추고 프로그램을 보다 유연하게 해준다.
위의 그림과 같이 클래스 C에서 클래스 A와 B의 객체를 new를 사용해 바로 만드는 것이 아니라,
외부(Bean Context)에서 클래스 A와 B의 객체를 만들고(의존 주입) 해당 객체를 클래스 C에 전달해주는 것이다.
이렇게하면, 클래스 A와 B의 명칭이 바뀌었을 때 Bean Context의 정보만 수정하면 되므로 수정 및 유지보수가 훨씬 편리해진다.
(2) AOP(Aspect Oriented Programming)
->관점 지향 프로그래밍.
자바의 경우 수직적 제어만 가능하지만, Spring에서는 수평적인 제어가 가능하다.
(AOP의 경우 따로 포스팅을 하는것이 나을 것 같다.)