포도가게의 개발일지
Spring boot? 본문
why? Spring boot 란?
- 스프링 부트(Spring Boot)는 스프링(Spring)을 더 쉽게 이용하기 위한 도구라고 볼 수 있습니다. Spring Boot는 매우 간단하게 프로젝트를 설정할 수 있게 하여, Spring 개발을 조금 더 쉽게 만들어주는 역할을 하고 있습니다.
spring ?
- 스프링은 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크입니다. spring.io 사이트에서 확인하면 스프링 프레임워크는 현대 자바 기반의 엔터프라이즈 어플리케이션을 위한 프로그래밍 및 Configuration Model 제공한다라고 언급하고 있습니다.
왜 스프링을쓸까?
- 장점 : 개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에 실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능합니다.
- 장점 : 어느정도 품질이 보장되어있고, 구축되어있는 구조에 코드를 넣어 개발하는 형태이기 때문에 개발시간의 단축또한 장점입니다.
- 단점 : 구조가 있기 때문에 프레임워크에 있는 코드를 습득하고 이해하는데 오랜 시간이 걸립니다.
- 단점 : 스프링 프레임워크의 형식에 맞추어져 있기 때문에 자유롭고 유연하게 개발하는데에 한계가 있습니다.
왜 자바를 쓰는거지?
- 자바의 슬로건 write once, run anywhere ( 한번 작성하면, 어디서든 돌아간다. )
- 대표적인 객체 지향 언어
- JVM을 통해 어떠한 운영체제와 cpu상관없이 jvm이 설치된 환경이라면 언어는 항상 동일한 코드로 해석됨 플랫폼에 영향을 받지 않는다.
객체지향언어를 왜쓰는거지?
- 컴퓨터 프로그래밍의 한가지 기법으로 객체를 만들고 객체를 사용하는 프로그래밍 방법을 말한다고 볼 수 있습니다.
- 프로그램을 다수의 "객체"를 만들고, 이들이 서로 상호작용을 통해 만들어지는 방식이다.
때문에 문제가 생기더라도 전체적인 코드 수정이 아닌 해당 객체만 수리 및 교체를 하면 되기때문에 유지보수가 쉽다!
캡슐화(Encapsulation)
데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법입니다.
- 캡슐화는 관련이 있는 변수와 함수를 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 은닉하는게 핵심입니다.
객체에 직접적인 접근을 막고 외부에서 내부의 정보에 직접접근하거나 변경할 수 없고, 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능합니다.
▷ 클래스 접근 제어자
default : 동일 패키지의 클래스(class)에만 인스턴스(객체)를 생성가능하다.
public : 다른 패키지에서 인스턴스(객체)를 생성가능하다.
▷ 메소드 접근 제어자
private : 동일한 클래스 안에서만 접근이 가능하고, this를 사용하는 것들은 외부에서 접근 불가능하고, 상속도 안된다.
default : 접근제어자가 없는 형태로 동일한 패키지 안에서만 접근이 가능하다.
protected : 동일한 패키지 안에서 사용가능하고, 다른 패키지라도 상속받은 클래스에는 접근이 가능하다.
public : 모든 객체에서 접근 가능하다.
상속(Inheritance)
상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것 입니다. 즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려줍니다.
다형성(Polymorphism)
상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말합니다.
쉽게 말하면 한부모의 밑에서 태어난 자식(쌍둥이포함)이 똑같지는 않는것과 같은 것과 같다할 수 있습니다.
자바의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라 할 수있고, 이 것을 구현하는걸 오버로딩(Overloading)과 오버라이딩(Overriding) 이라고 한다.
추상화(abstraction)
추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것을 말합니다.
다시 말하면 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정을 가르킵니다.
객체지향언어의 장점
1. 재사용성
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음.
2. 생산성 향상
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음.
3. 자연적인 모델링
우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
4. 유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할
수 있다.
객체지향언어의 단점
1. 개발속도가 느린점
객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.
2. 실행속도가 느린점
객체지향언어는 대체적으로 실행속도가 느리다.
왜느릴까?
- 절자지향프로그래밍 같은 경우는 미리 코드를 메모리에 올려놓고 쓰지만
- java같은경우는 필요할때마다 코드를 메로리에 올려서 사용하고 다쓰면 지워줌
- JVM이라는 하나의 프로그램 안에서 다시 프로그램이 실행되는 구조이므로 같은 프로그램이라도 C언어에서는 하나의 프로그램이, Java에서는 2개 이상의 프로그램이 동시에 작동됩니다. 그만큼 메모리 사용과 연산도 많아지고 상대적으로 느릴 수밖에 없습니다.
3. 코딩난이도 상승
다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.
'Spring boot' 카테고리의 다른 글
[Spring] 생성자주입? 필드주입? 세터주입? (0) | 2022.01.05 |
---|---|
[Java] Java 원시타입 vs 참조타입 (0) | 2022.01.05 |
[Spring] CRUD (0) | 2022.01.05 |
[Spring] MVC 패턴 (0) | 2022.01.04 |
spring boot 시작하기 (0) | 2022.01.03 |