2021. 10. 23. 01:14ㆍ벡엔드 개발 공부/Springboot
이 글은 인프런의 김영한님의 spring강의를 보고 정리한 내용입니다.
Spring의 핵심가치에 대해 알기전에 왜 탄생했는지 부터 간단히 보자.
Spring의 탄생배경
스프링이 만들어지기 전 개발자들은 EJB(Enterprise Java Beans)를 사용했었다. 이 당시 자바 진영의 표준 기술이였고 transaction,분산, orm기술까지 모두 가지고 있었다. 하지만 비쌋고 무엇보다 어렵고, 복잡하고 느렸다. 오죽하면, POJO(Plan Old Java Object) 즉, 옛날에 사용하던 기술을 사용하자는 말까지 나왔을 정도이다. EJB를 사용하던 개발자들은 답답함에 Hibernate 추후에 JPA가 되는 ORM을 오픈소스로 만들었고 또 J2EE라는 책이 유명해지면서 해당 예제코드를 바탕으로 스프링이 만들어지게 된다.
스프링은 처음에는 xml파일을 사용해 설정해야했지만 점차 java로 설정할 수 있게 되었고 또 spring boot라는 아주 스프링을 편하게 사용할 수 있게 해주는 프레임워크가 나왔고 그후 reactive programming(비동기로 작업을 할 수 있게)을 지원하게 되었다.
Spring의 핵심 가치
우선 spring은 자바 언어 기반의 framework이다.
자바의 특징은 객체지향이라는 것이다. 그럼 우리는 여기서 알 수 있다. 스프링은 좋은 객체지향 어플리케이션이 개발될 수 있게 도와주는 framework다.
그렇다면 좋은 객체지향이란?
유연하고 변경용이 한것을 좋은 객체지향이라 부를 수 있을것이다.(다형성)
쉽게 표현하자면 자동차가 바뀌어도 운전자는 별 큰 영향없이 차를 운전할 수 있다. 이처럼 Client가 내부구조를 몰라도 사용할 수 있고 또 내부 구조가 바뀌어도 상관없이 사용할 수 있는 것을 다형성이라고 한다.
이렇게 자동차의 역할과 구현을 분리했듯이 우리고 역할과 구현을 분리해 내부구조를 몰라도 사용이 가능하고, 내부 구조를 변경해도 client가 영향을 받지 않도록 해야한다. 이 역할과 구현을 분리하면 java에서는 역할= interface, 구현=interface를 구현한 class가 된다.
다형성의 본질
한마디로, 클라이언트가 영향을 받지 않고 서버의 구현을 변경할 수 있어야 한다.