상세 컨텐츠

본문 제목

Spring 공부하기

컴퓨터 공부/코드스테이츠 백엔드 부트캠프

by 주중 (zuzung) 2022. 6. 15. 14:58

본문

표지용 이미지

 

- Framework란 무엇인가?

프로그래밍을 하기 위한 어떠한 틀이나 구조. 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 함.

 

 

- Spring Framework란?

Java 기반의 웹 애플리케이션을 개발하는데 필요한 Framework.

프론트와 백부분이 분리되어 개발이 가능함

 

 

- Spring Framework를 왜 배워야하는지

객체 지향 설계 원칙에 잘 맞는 재사용성

확장이 가능한 애플리케이션 개발 스킬을 향상

보다 나은 성능과 서비스의 안전성이 필요한 복잡한 기업용 엔터프라이즈 시스템을 제대로 구축하기 위한 능력을 기를 수 있음.

 

 

- POJO의 의미

Plain Old Java Object

IoC/DI, AOP, PSA를 통해 달성할 수 있음

아래 두가지의 기본적인 규칙을 지키면서 프로그래밍 하는 것

1. Java나 Java의 스펙에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 한다.

2. 특정 환경에 종속적이지 않아야 한다.

 

 

- POJO가 필요한 이유

1. 특정 환경이나 기술에 종속적이지 않으면 재사용 가능하고, 확장 가능한 유연한 코드를 작성할 수 있다.

2. 저수준 레벨의 기술과 환경에 종속적인 코드를 애플리케이션 코드에서 제거함으로써 코드가 깔끔해진다.

3. 코드가 깔끔해지기 때문에 디버깅하기도 상대적으로 쉽다.

4. 특정 기술이나 환경에 종속적이지 않기 때문에 테스트 역시 단순해진다.

5. 객체지향적인 설계를 제한없이 적용할 수 있다.

 

 

- IoC/DI의 의미

Inversion of Control/Dependency Injection

IoC란 애플리케이션 흐름의 주도권이 뒤바뀐 것

서버는 main method가 없고 클라이언트 요청마다 Servlet 컨테이너 내의 컨테이너 로직(Service() 메서드)이 서블릿을 직접 실행시켜 줌

DI는 IoC의 개념이 Spring에 적용된 것.

 

- IoC/DI가 필요한 이유

느슨한 결합(Loose Coupling)을 위해 느슨한 의존성 주입을 하기 때문.

주로 인터페이스를 사용한다.

 

- AOP의 의미

Aspect Oriented Programming (관심 지향 프로그래밍)

애플리케이션 핵심 업무 로직에서 보안, 트랜잭션 같은 공통 로직을 분리하는 것

 

- AOP가 필요한 이유

  • 코드의 간결성 유지
  • 객체지향설계 원칙에 맞는 코드 구현
  • 코드의 사용

 

- PSA의 의미

Portable Service Abstraction

클라이언트가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것

추상화 -> 일관된 방식으로 해당 서비스의 기능을 사용할 수 있음

 

- PSA가 필요한 이유

기술이 변경되더라도 최소한의 변경으로 요구사항을 반영하기 위함

애플리케이션의 요구 사항 변경에 유연하게 대처할 수 있음

 

- 객체 지향 설계 (SOLID)

  • SRP(Single Responsibility Principle) : 한 클래스는 하나의 책임만 가져야 한다.
  • OCP(Open/Closed principle) : 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다.
  • LSP(Liskov substitution Principle) : 프로그램의 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 인스턴스로 바꿀 수 있어야 한다.
  • ISP(Interface Segregation Principle) : 특정 인터페이스 여러개가 범용 인터페이스 하나보다 좋다.
  • DIP(Depemdency inversion principle) : 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다. 의존성 주입은 이 원칙을 따르는 방법 중의 하나이다.

 

- Architecture의 의미

어떠한 시스템을 구축하는데 있어 해당 시스템의 비즈니스적 요구사항을 만족하는 전체 시스템 구조를 정의하는 것.

시스템 아키텍처, 소프트웨어 아키텍처/애플리케이션 아키텍처가 있다.

 

- Spring Boot란?

Spring Framework의 편리함에도 불구하고 Spring 설정이 복잡하기때문에 이를 해결하기 위해 생겨난 Spring Project 중 하나이다.

 

- Spring Boot를 사용해야 하는 이유

1. XML 기반의 복잡한 설계 방식 지양

2. 의존 라이브러리의 자동 관리

3. 애플리케이션 설정의 자동 구성

4. 프로덕션급 애플리케이션의 손쉬운 빌드

5. 내장된 WAS를 통한 손쉬운 배포

 

- Spring Boot의 핵심 컨셉

Spring 구성은 Spring에게 맡기고 비즈니스 로직에만 집중하자!

'컴퓨터 공부 > 코드스테이츠 백엔드 부트캠프' 카테고리의 다른 글

1개월 회고 쓰기  (2) 2022.05.23
Annotation  (0) 2022.05.19
D+4 복습(flexbox)  (2) 2022.04.28
D+3 복습 (html/css)  (0) 2022.04.27
2일 차 배운 내용 복습  (0) 2022.04.26

관련글 더보기

댓글 영역