Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

공hannah부

[스프링 부트3 백엔드 개발자 되기] - 1일차 본문

공부/백엔드

[스프링 부트3 백엔드 개발자 되기] - 1일차

Hannah0226 2024. 2. 2. 19:37

0장 - 프로젝트 만들기

Build System의 그레이들과 메이븐의 차이?

그레이들과 메이븐은 소스 코드를 이용해서 실행 가능한 애플리케이션을 생성하는 과정을 자동화하는 프로그램을 말한다.(의존성 내려받기, 코드 패키징, 컴퍼일, 테스트 실행 등)

 

요즘은 그레이들을 많이 사용하는 추세이다.

  • 메이븐에 비해 가독성이 좋고 간단
  • 자바, 코틀린, 그루비 등 다양한 언어를 지원하며, 원하는 대로 빌드 스크립트 작성 가능
  • 빌드와 테스트 속도가 메이븐에 비해 빠름

 

1장 - 자바 백엔드 개발자가 알아두면 좋은 지식

1.1 서버와 클라이언트

클라이언트: 서버로 요청하는 모든 프로그램. 대표적으로 웹 브라우저가 있다.

서버: 클라이언트의 요청을 받아 처리하는 주체

 

1.2 데이터베이스

데이터베이스: 여러 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소

RDB: Relational Database의 약자로, 관계형 데이터베이스를 뜻함. 행과 열로 이루어진 테이블로 관리하며, primary key를 사용해 각 행을 식별함

SQL: Structured Query Language의 약자로, 데이터 검색을 하는 언어를 뜻함. 

NOSQL: SQL을 안쓴다는 의미로 사용되기도 하지만 최근에는 Not Only SQL의 의미로 많이 사용함. 

 

1.3 아이피와 포트

아이피(IP): 인터넷에서 컴퓨터 또는 기기들이 서로 식별하고 통신하기 위한 주소. (서버를 찾기위한 번호)

포트: 서버에서 운용되고 있는 서비스를 구분하기 위한 번호

 

1.4 라이브러리와 프레임워크

라이브러리: 애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음

프레임워크: 소프트웨어 개발을 수월하게 하기 위한 소프트웨어 개발 환경. frame(틀) + work(일하다) = 일하기 위한 틀

 

2장 - 스프링부트3 시작하기

2.1 스프링과 스프링부트

스프링: 엔터프라이즈 애플리케이션(대규모의 복잡한 데이터를 관리하는 애플리케이션) 개발을 더 쉽게 만들기 위해 나온 도구

스프링부트: 스프링의 단점을 보완하고자 나온 도구로, 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어줌

  • 차이점1(구성의 차이): 스프링은 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의해야 함. 반면 스프링부트는 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드함으로써 수동으로 구성할 필요X
  • 차이점2(내장 WAS의 유무): 스프링 애플리케이션은 일반적으로 톰캣과 같은 WAS(웹 애플리케이션을 실행하기 위한 장치)에서 배포됨. 하지만 스프링 부트는 WAS를 자체적으로 가지고 있음 jar 파일만 만들면 별도로 WAS를 설정하지 않아도 애플리케이션 실행 가능

 

2.2 스프링 콘셉트 이해하기

IoC(제어의 역전): Inversion of Control의 줄임말로, 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말함. 스프링은 스프링 컨테이너가 객체를 관리, 제공함

DI(의존성 주입): Dependecy Injection의 줄임말로, IoC를 구현하기 위해 사용하는 방법임. 어떤 클래스가 다른 클래스에 의존한다는 뜻

스프링 컨테이너: 빈을 생성하고 관리함. @Autowired 같은 애너테이션을 사용해 빈을 주입받을 수 있게 DI를 지원하기도 함

: 스프링 컨테이너가 생성하고 관리하는 객체

 

예시 코드

1번 코드처럼 기존의 자바 코드는 클래스 A에서 B 객체를 쓰고 싶은 경우 직접 생성했지만, 2번 코드와 같이 스프링에서는 클래스 A에서 B객체를 쓰고 싶은 경우 스프링 컨테이너에서 객체를 주입받아 사용

public class A{
    private B b;
}
public class A{
    @Autowired
    B b;
}

 

 

2.3 관점지향 프로그래밍 (AOP)

관점지향 프로그래밍(AOP): Aspect Oriented Programming의 줄임말로 프로그래밍에 대한 관심을 핵심관점, 부가 관점으로 나누어서 관심기준을 모듈화하는 것을 의미 → 이를 사용해 프로그래머는 핵심 관점 코드에만 집중할 수 있게 되고, 프로그램의 변경과 확장에도 유연하게 대응할 수 있게 됨

 

ex) 계좌이체, 고객 관리하는 프로그램이 있을 때, 각 프로그램에는 로깅 로직( 지금까지 벌어진 일을 기록하기 위한 로직)과 데이터베이스(여러 데이터를 관리하기 위한 로직)이 포함된다. 이때 핵심 관점은 계좌 이체와 고객 관리이고, 부가 관점은 로깅과 데이터베이스 연결 로직이 된다.

 

이식 가능한 서비스 추상화(PSA): Portable Service Abstraction의 줄임말로, 스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스를 말함

 

ex) 클라이언트의 매핑과 클래스, 메서드의 매핑을 위한 애너테이션

'공부 > 백엔드' 카테고리의 다른 글

[스프링 부트3 백엔드 개발자 되기] - 3일차  (0) 2024.03.03
[스프링 부트3 백엔드 개발자 되기] - 2일차  (0) 2024.02.02
DDD  (1) 2023.11.21
인증 방식의 종류 & JWT  (0) 2023.11.02
Spring Security  (0) 2023.11.02