SpringBoot # 기본 개념

박정민·2023년 2월 27일
0

SpringBoot

목록 보기
1/3
post-thumbnail

Spring Boot

스프링 프레임워크는 자바 기반의 애플리케이션 프레임워크이다. 목적에 따라 다양한 프로젝트를 제공하는데 그중 하나가 스프링 부트 이다.

1. 제어 역전 IOC

일반적인 자바 개발 경우 객체를 사용하기 위해서는

public Test test = new Test();

와 같이 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다.

객체를 생성하고 사용하는 작업을 개발자가 제어하는 구조 이지만, 제어 역전을 특징으로 하는 스프링은 기존 개발방식과 다르게 동작한다. IoC 를 적용한 환경에서는 사용할 객체를 직접 생성하지 않고, 객체의 생명주기 관리를 외부에 위임한다. 여기서 외부는 스프링 컨테이너, 또는 IoC 컨테이너 이다. 이때 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 하며, 이를 통해 의존성 주입, 관점 지향 프로그래밍이 가능하게 한다.

2. 의존성 주입 DI

제어 역전 방법 중 하나로 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식이다.

  • 생성자를 통한 의존성 주입
  • 필드 객체 선언 통한 의존성 주입
  • setter 메서드 통한 의존성 주입

스프링에서는 @Autowired 라는 어노테이션을 통해 의존성 주입 가능

1. 생성자

public DI(Test test) {

this.test = test;

}

2. 필드 객체

@Autowired 

public Test test;

3. Setter

Test test;

 @Autowired

public void setter(Test test){

this.test = test;

}

3. 관점 지향 프로그래밍 AOP

관점 지향 프로그래밍은 스프링의 중요한 특성이다. 자바는 OOP 개념인데 AOP는 이를 더 잘 사용하게 해준다.

그림을 보면 이해가 쉬운데 핵심관심 + 횡단관심으로 관심을 분리, 핵심 기능에 중복되는 공통적인 기능을 횡단으로 삽입하여 실행하는 개념이다.

-OPP : 객체지향 프로그래밍

  • 추상화 - 클래스를 정의할 때, 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 개략화 하는 것, 즉 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼 클래스를 선정하는 개념이다.
  • 캡슐화 - 객체 내부 구조 및 데이터를 캡슐처럼 감싸 외부에서 볼 수 없도록 하는것
  • 상속 - 말그대로 자식 클래스가 상속받고싶은 부모 클래스 선택해서 물려받는것 이다. 중복코드를 줄이고, 유지보수가 편하며, 통일성이 있고 다형성을 구현 가능하다.
  • 다형성 - 상위 클래스가 동일한 메세지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향 원리 입니다.

AOP는 관점을 기준으로 핵심 기능부가 기능으로 구분해 각각을 하나의 관점으로 보는것을 의미한다.

profile
Junior Backend Developer

0개의 댓글