스프링

Jeong Gyejin·2023년 2월 22일
0

스프링 프레임워크

목록 보기
1/17

스프링 프레임워크란

자바로 애플리케이션을 개발하는 데 필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구 입니다.

  • 자바 언어 기반의 프레임워크
  • 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  • 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

1. 제어 역전(Inversion of Controller)

일반적인 자바 개발의 경우 아래와 같이 객체를 사용하기 위해 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용합니다.


    @RestController
	public class NoDIController {
    private MyService service = new MyServiceImpl();

    @GetMapping("/no-di/hello")
    public String getHello() {
        return service.getHello();
    	}
    }

하지만 제어의 역전을 특징으로 하는 스프링은 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부인 스프링 컨테이너에 위임합니다.
객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며, 이를 통해 의존성 주입, 관점 지향 프로그래밍 등이 가능하게 됩니다.

2. 의존성 주입(DI)

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

@RestController
public class DIController {
MyService myService;

@Autowired
public DIController(MyService myService) {
	this.myService = myService;
}

@GetMapping("/di/hello")
public String getHello() {
return myService.getHello();
		}
}

스프링에서 의존성을 주입받는 방법

Spring에서는 @autowired 어노테이션 이용해서 의존성을 주입할 수 있으며, 생략도 가능합니다.

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

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

관점을 기준으로 묶어 개발하는 방식을 의미합니다. 여기서 관점이란 어떤 기능을 구현할 때 그 기능을 핵심기능과, 부가기능으로 구분해 각각을 하나의 관점으로 보는 것을 의미합니다.

  • 핵심기능
    비즈니스 로직을 구현하는 과정에서 비즈니스 로직이 처리하려는 목적 기능을 이야기 합니다.

  • 부가기능
    핵심기능에 추가적인 로깅 처리나 트랜잭션을 처리하는 코드를 작성할 경우 이를 부가기능이라고 합니다.

AOP관점에서 부가기능은 핵심기능이 어떤 기능인지에 무관하게 로직이 수행되기 전, 후로 수행되기만 하면 됩니다.
이처럼, 여러 비즈니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식을 AOP라고 합니다.

AOP를 구현하는 방식

  • 컴파일 과정에서 삽입하는 방식
  • 바이트코드를 메모리에 로드하는 과정에서 삽입하는 방식
  • 프록시 패턴을 이용한 방식

스프링은 프록시 패턴을 통해 AOP기능을 제공하고 있습니다.
스프링 AOP의 목적은 모듈화 해서 재생 가능한 구성을 만드는 것입니다.

profile
항상 더 나은 개발자가 되기 위해서 끊임없이 공부하고 학습하면서 성장하는 사람이 되겠습니다.

0개의 댓글