본문 바로가기

SPRING/Spring

[되기시리즈 스프링부트3| 02장 스프링부트3 시작하기] IoC/DI, AOP,

1. 학습목표

의존성 주입과, 제어의 역전을 이해할 수 있다.

2.필요 개념 문장정리

의존성 주입(DI: Dependency Injection)

  • 어떤 클래스가 다른 클래스에 의존한다는 뜻이다.
  • @Autowired라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 한다.
  • 빈은 스프링 컨테이너에서 관리하는 객체를 말한다.
  • 기존의 자바코드는 클래스 A에서 B객체를 직접 생성했지만 스프링의 경우 스프링 컨테이너에서 객체를 주입받아 사용한다.

의존성
출처 : 유튜브 5분개발지식

제어의 역전(IoC: Inversion of Control)

  • 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.

관점지향 프로그래밍(AOP: Aspect Oriented Programming)

  • 프로그래밍에 대한 관심을 핵심관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는 것을 의미한다.
  • OOP에 보완적으로 확장성있게 사용하는 것으로 로깅, 권한체크, 데이터베이스연결로직 등 부가관점으로 기능을 구현한다.
  • 인프라 로직은 중복코드를 만들어낼 가능성이 높고 비즈니스 로직과 함께있으면 이해가 어렵다.

이식가능한 서비스 추상화(PSA: Portable Service Abstraction)

  •  스프링에서 제공하는 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스를 말한다.
  • 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것이다.

출처 - 되기시리즈 스프링부트3

 3. 코드작성

package me.ggambo.springbootdeveloper;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello, World!!";
    }
}
class Point {
	int x;
    int y;
    
    String getLocation(){
    	return "x : " + x + ", y :" + y;
    }
}
class Point3D extends Point {
	int z;
    String getLocation() { // 오버라이딩
    	return "x : " + x + ", y :" + y + ", z :" + z;
    }
}

4. 마무리

스프링에 대해 공부한 내용을 정리를 하게 되었다.

큰 항목부터 학습하고 세부적으로 기록해야겠다.