내가 학원을 다닐 때 이제 자바를 배우고 JSP를 배우고 다음에 스프링을 배웠다. 정확히 말하자면 스프링부트를 배웠다.
이 때 배울 때 왜 스프링부트를 배워야하는 가?? 에 대한 질문의 답은 순수 자바와 JSP와 톰캣을 이용해서 개발을 하면
불편한 점이 많기에 이를 개선해서 쉽고 편하게 개발할 수 있도록 해주는 것이 프레임 워크인 스프링부트라고 배웠다.
자 하지만 이건 본질이 아니다. 단순히 개발을 쉽고 편하게 개발할 수 있다?? 그면 도대체 어떻게 쉽고 편하게 개발 할 수 있는지에 대해 알아야 한다.
나는 이 코딩을 배운 지 얼마 안됐고 또 컴퓨터 관련 학과를 나오지 않았기 때문에 이 코딩, 프로그래밍에 대한 역사와 이를 발전 시킨 인물들에 대해서는 완전 무지하다. 또 이 컴퓨터 프로그래밍이 예전에는 얼마나 힘들었고 지옥이 었는지는 체감하지도 못한다. 하지만 이 강의 저 강의 듣다보면 정말 1990년대 그리고 2000년대에는 프로그래머들이 정말 지옥이라고 할 정도로 힘들었다고 한다.
그런 역사 속에서 점차 발전해서 지금까지 온 것이 Spring 프레임워크일 것이다. 그러면 Spring이 도대체 무엇을 편하게 해준다는 것일까?? 일단 Spring은 자바 언어 기반의 프레임 워크이다. 그러면 이 자바의 큰 특징은 무엇인가???
바로 객체 지향 언어라는 것이다. 그러면 객체는 무엇이고 객체 지향이 무엇인가??
위키백과의 정의 따르면 객체는 '클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다'라고 정의한다.
객체 지향은 ' 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고 받고, 데이터를 처리 할 수 있다', '객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 라고 정의한다.
뭐 쉽게 설명하면 객체라는 부품을 이용해서 데이터도 변경하고 데이터도 집어 넣고 수정하고 하는 것을 이야기 할 있겠다. 이게 큰 장점이 되는 이유는 바로 '프로그램을 유연하고 변경이 용이하게 만들기' 때문이라는 것이다. 이는 객체지향의 중요한 특징인 '다형성'으로 인해 가능하다.
자 우리는 어떤 '역할'과 그것을 '구현'을 함으로써 이를 좀 더 쉽게 이해 할 수 있는데
붕어빵 틀을은 붕어빵을 만드는 '역할'이다. 붕어빵 틀 자체는 붕어빵이 아니다. 이는 붕어빵을 만드는 역할을 할 뿐이다.
붕어빵 틀을 통해서 밀가루 넣고 원하는 소를 넣어서 구워야지 이제 원하는 붕어빵이 '구현'된다. 이게 이 객체 지향의 핵심이다. 즉, 이 역할이라는 것만 잘 정해놓으면 우리는 이 역할에 맡는 구현체들을 원하는 입맛에 맡게 구현해 내고 교체할 수 있게 되는 것이다. 내가 피자붕어빵 먹다가 질려서 슈크림 붕어빵을 먹고 싶으면 소만 교체하면 되듯이 말이다.
자 이런 교체하면 되는 것들을 좀 더 편리하게 스프링은 제어의 역전(IoC), 의존관계 주입(DI)를 통해서 좀 더 편리하게 다룰 수 있도록 지원해 주는 것이다.
'Spring' 카테고리의 다른 글
Spring Security를 이용한 아이디 패스워드 체크(Spring - BlueShirtProject) (0) | 2023.10.20 |
---|---|
내 생각으로 구현해 보는 간단한 아이디 찾기(Spring - BlueShirt Project) (0) | 2023.10.20 |
Could not find or load Main class 오류 - IntelliJ (0) | 2023.05.12 |
SecurityConfig 설정 - SpringSecurity (0) | 2023.02.15 |
Spring Security를 사용 하려는 데 deprecated???? (2) | 2022.12.28 |