221026 SpringBoot

서이·2022년 10월 26일

수업정리

목록 보기
14/17

SpringBoot란?

스프링부트(Spring Boot)는 자바의 웹 프레임워크로 기존 스프링(Spring) 프레임워크에 톰캣 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크이다.

제어의 역전 (Inversion Of Control, IoC)

 IoC를 적용한 환경에서는 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임합니다. 여기서 '외부'는 스프링 컨테이너 또는 Ioc컨테이너를 의미합니다.
객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며 제어 역전을 통해 의존성 주입(DI;Dependency Injection), 관점 지향 프로그래밍(AOP;Aspect-Oriented Programming)등이 가능해집니다.

 스프링을 사용하면 객체의 제어권을 컨테이너로 넘기기 때문에 개발자는 비즈니스 로직을 작성하는 데 더 집중할 수 있습니다.

의존성 주입(DI)

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

스프링에서 의존성을 주입받는 방법은 세 가지가 있습니다.

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

 스프링에서는 @Autowired라는 어노테이션을 통해 의존성을 주입할 수 있습니다. 스프링 4.3 이후 버전 생성자를 통해 의존성을 주입할 때 @Autowired 어노테이션을 생략할 수도 있습니다.

@RestController
public class DIController {
	MyService myService;
    
    @Autowired
    public DIController(MyService myService){
    	this.myService = myService;
   }
   
   @GetMapping("/di/hello")
   public String getHello(){
   		return myService.getHello();
    
  }

 권장하는 의존성 주입 방법은 생성자를 통해 의존성을 주입받는 방식입니다. 다른 방식과는 다르게 생성자를 통해 의존성을 주입받는 방식은 레퍼런스 객체 없이는 객체를 초기화할 수 없게 설계할 수 있기 때문입니다.

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

 AOP는 관점을 기준으로 묶어 개발하는 방식을 의미합니다. 이러한 AOP를 구현하는 방법은 크게 세가지 있습니다.

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

스프링AOP의 목적은 OOP와 마찬가지로 모듈화해서 재사용 가능한 구성을 만드는 것이고 모듈화된 객체를 편하게 적용할 수 있게 함으로써 개발자가 비즈니스 로직을 구현하는 데만 집중할 수 있게 도와주는 것입니다.

스프링 프레임 워크 vs 스프링 부트

  1. 의존성 관리(스프링 부트는 의존성을 제공합니다.)
  2. 자동 설정(애플리케이션에 추가된 라이브러리를 실행하는 데 필요한 환경 설정을 알아서 찾아줍니다.)
  3. 내장 WAS(스프링부트는 내장 WAW가 존재합니다. 자동 설정 기능은 톰캣에도 적용되므로 특별한 설정 없이도 톰캣을 실행할 수 있습니다.)

REST란?

 HTTP를 잘사용하기 위한 아키텍쳐(제약조건들의 집합) 스타일이다.
REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현합니다.
REST의 원칙을 지키면서 API의 의미를 표현하고 쉽고 파악하기 쉽게 하는 것을 RESTful하다고 합니다.

REST API란?

 REST한 방식으로 데이터를 상호교환하게 설계된 API를 말합니다.

=>HTTP를 잘사용하기 위해 URI와 HTTP메소드를 사용해서 URI로 어떤 자원에 접근할 것인지, 메소드로 어떤 행위를 할 것인지 표현하여 설계된 API를 말합니다.

->API가 RESTful로 간주되기 위해서는 몇가지 조건이 있는데 그 중 가장 중요한 건 클라이언트와 서버가 종속적이지 않아야한다는 말입니다. 즉, 클라이언트가 요청시마다 자기정보를 보내야하고 서버는 받은 정보로 클라이언트의 정보를 확인합니다.

 RESTful API를 사용하면 좋은점

URL만 보고 어떤 자원에 접근할 것인지 메소드를 보고 어떤 행위를 할지 알 수 있기 때문에 개발을 할 때 용이합니다.


Controller 생성

@RestController 
public class HelloController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET) 							
    public String hello(){
        return "Hello World";
    }
}

PathVariable


@RequestMapping(value = "/variable1/{variable}")
public String getVariable1(@PathVariable String variable) {
        return variable;
}
profile
작성자 개인이 잊을 때마다 보라고 정리한 글

0개의 댓글