춤추는 개발자

Spring과 Spring boot 본문

Developer's_til/스프링 프레임워크

Spring과 Spring boot

Heon_9u 2020. 10. 2. 13:16
728x90
반응형

Q. Spring의 특징은?

 Spring의 가장 큰 특징은 의존성 주입(DI)과 제어의 역전(IOC). 이들로 인해서 결합도를 낮추는 방식으로 어플리케이션을 개발할 수 있다. 이런 방식으로 개발한 응용프로그램은 단위테스트가 용이하기 때문에 퀄리티 높은 프로그램 개발이 가능합니다.

 

Q. 의존성 주입이란?

 객체간의 결합도를 낮출 수 있는 방식으로 어노테이션을 이용해 구현할 수 있습니다.

 

 

의존성 주입이 없는 경우
@RestController
public class MyController {

    private MyService service = new MyService();

    @RequestMapping("/welcome")
    public String welcome() {
        return service.retrieveWelcomeMessage();
    }
}

 

 

의존성 주입이 있는 경우
@Component
public class MyService {

    public String retrieveWelcomeMessage(){
       return "Welcome to InnovationM";
    }
}

@RestController
public class MyController {

    @Autowired
    private MyService service;

    @RequestMapping("/welcome")
    public String welcome() {
        return service.retrieveWelcomeMessage();
    }
}

@Component란 BeanFactory에 해당 클래스를 빈(Bean)으로 등록, 스프링 관리하에 두겠다는 의미.

@Autowired란 각 상황의 타입에 맞는 빈(Bean)을 자동으로 주입.

여기서 빈(Bean)이란 Spring IOC 컨테이너가 관리하는 자바 개체를 말한다. 

 

즉, 위 예제는

1. MyService에 대한 Bean을 생성

2. MyController에 있는 service 변수 주입

3. 이때, Mock 객체를 통해 MyService를 MyController에 있는 service 변수에 넣어줌.

 

 

Q. 왜 Spring boot가 필요해졌는가?

최소한의 기능으로 Spring MVC를 사용하여 개발 환경을 구축하는데 오랜 시간이 걸립니다.

(Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory) 등

 

하지만 Spring boot는 자동 설정을 이용해 개발에 필요한 모든 내부 의존성을 관리합니다. 미리 설정된 Starter 프로젝트를 제공하며 이를 통해 Web, Hibernate, JDBC 등 의존성을 주입할 수 있고 의존성 관리와 호환 버전에 대해 고려할 필요가 없습니다.

 개발자가 할건 어플을 실행할 뿐!

 

추가 사항

 

IOC란 제어의 역행이라는 뜻으로 객체의 생성 및 소명을 개발자 대신 Spring이 대신한다.

DI란 의존성 주입이라는 뜻으로 IOC를 실제로 구현하는 방법. 의존성이 있는 컴포넌트를 Spring이 런타임에서 연결해 처리해준다.

 

Bean 객체란 XML설정 파일을 통한 생명주기, 종속성 등의 메타데이터를 가지고 Spring 컨테이너에 생성된 객체.

 

 Rest란 URL을 통해 자원을 명시하고, Method를 통해 데이터대한 CRUD를 적용하는 것을 의미합니다.

API란 데이터를 Json형식이나 XML형식을 담아서 Http프로토콜 위에서 통신하는 것을 의미합니다..(GET, POST, PUT, DELETE)

 Restful은 Rest법칙(자원, 메소드, 명사, 확장자 제외)을 지킨다는 것을 말한다.

 

 Ajax란 Client와 Server가 비동기적으로 통신하는 기술, Http요청 시 XMLHttpRequest라는 객체를 생성하여 수행.

728x90
반응형