스프링 프레임워크(spring framework)는 자바 기반의 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션을 개발하기 위한 다양한 기능을 제공하고 쉽게 사용하도록 돕는 도구 입니다.스프링은 목적에 따라 다양한 프로젝트를 제공하는데 그중 하나가 스프링 부트 (spring boot)입니다.
엔터프라이즈급 개발이란..?
👉 기업 환경을 대상으로 하는 개발을 뜻하고 대규모 데이터를 처리하는 환경을 엔터프라이즈 환경이라고 말 합니다. 스프링은 이 환경에 알맞게 설계되어 있어 개발할때 많은 요소들을 프레임워크에 위임하고 로직을 구현하는 데 집중할 수 있게 도와 줍니다.
⭐️ 스프링의 핵심 가치 : 애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 았게끔 하는 것
👉 일반적으로 스프링을 배우지 않고 자바만 배워 개발했던 사람의 경우 객체를 사용하기 위해 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용하는 방식 이었습니다. 이 과정은 개발자가 직접 제어하는 구조 입니다. 하지만 제어 역전이라는 특징을 가지고 있는 스프링은 위의 방식과 다르게 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부에 위임 합니다. 여기서 외부라고 말하는 것은 스프링 컨테이너 또는 ioc 컨테이너를 의미 합니다. 객체의 관리는 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며 이 제어의 역전을 통해 의존성 주입 (DI) ,과전 지향 프로그래밍(AOP) 등이 가능해집니다. 이렇게 개발자의 객체 제어권을 컨테이너에 넘겨주게 되면 개발자는 비즈니스 로직을 작성하는것에 집중 할 수 있습니다.
👉 의존성 주입이란 제어 역전의 방법 중 하나이며 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식을 의미합니다.
스프링에서 의존성을 주입하는 방법 3가지
1. 생성자를 동한 의존성 주입
2. 필드 객체 선언을 통한 의존성 주입
3. setter 메서드를 통한 의존성 주입
스프링에서 @Autowired라는 어노테이션을 통해 의존성을 주입 할 수 있습니다. 최신 스프링 버전에서는 생략할수도 있지만 스프링 입문자에게는 가독성을 위해서 꼭 적는것을 추천 합니다.
⭐️ 스프링 곡식 문서에서 권장하는 방법은 생성자를 통해 의존성을 주입받는 방법 입니다. 레퍼런스 객체 없이는 객체를 초기화할 수 없게 설계 할 수 있기 때문 입니다.
👉 과전 지향 프로그래밍은 스프링의 아주 중요한 특집 입니다.
👉 spring initializr를 사용해 설정
👉 실행하기
👉 웹브라우저에서 localhost:8080/로 접속 해보기 , 서버를 실행 시켰지만 아직은 오류가 뜬다.
👉 spring boot 프로젝트의 기본 구조이다. Hello World를 출력하는 애플리케이션을 만들어 봅니다. 먼저controller 패키지와 HelloController 클래스는 기본 구조에 없었고 직접 생성 했다. 컨트롤러에 포함된 로직에서는 애플리케이션의 사용자 또는 클라이언트가 입력한 값에 대한 응답을 수행 합니다. 특별한 경우를 제외한 모든 요청은 컨트롤러를 통해 진행 되어야 합니다.
👉 컨트롤러 코드를 작성 했습니다.
👉 3번째 줄에 8080번 포트를 통해 웹 서버가 열린 것을 확인 할 수 있습니다.
👉 스프링 부트에서는 기본적으로 8080번 포트를 통해서 웹 애플리케이션이 실행되는테 포트를 변경하고 싶다면 application.properties 에서 위와 같이 변경 할 수 있습니다.
👉 애플리케이션이 잘 작동하는지 스트링 부트가 설정한 URL에 접속해서 확인 할 수 있습니다. 위에서는 잘 작동하는 것을 확인 할 수 있습니다.
애플리케이션이 잘 작동하는지 확인 할 수 있는 또 다른 방법은 Talend API Tester 를 통한 테스트 입니다. 웹 브라우저를 통한 테스트 방법은 간단하지만 상세한 응답을 확인 할 수 없다는 단점이 있지만 Talend API Tester를 사용하면 웹 브라우저를 통한 테스트 방법의 단점을 해결 할 수 있습니다.
Talend API Tester 는 구글에 검색 후 설치하고 구글 크롬으로 확장 프로그램에서 선택해 사용할 수 있습니다.
Talend API Tester는 HTTP 통신을 테스트 하는 프로그램이며 GET,POST,PUT,DELETE 등의 다양한 HTTP 메서드를 설정하고 쿼리와 파라미터를 담아 요청을 보낼 수 있습니다.
👉 위의 화면이 보인다면 Talend API Tester가 잘 실행 된 것 입니다.
이 화면에서 HTTP 요청을 보내려는 경로와 메서드를 설정 후 Send 를 클릭해 요청을 보내면 아래 부분에 위치한 Response 화면에 결과 값이 출력 됩니다. 그럼 잘 작동하는지 확인하기 위해서 아까 위해서 웹 브라우저에 입력했던 그대로 입력 해 봅니다. 주의 할 것은 기본으로 입력된 https를 http로 변경 해야된다는 것 입니다!
👉 앞서 웹 브라우저에서 확인 했던 결과와 같은 결과를 확인 할 수 있습니다.
Talend API Tester의 장점은 HTTP 헤더를 볼 수 있다는 점 입니다. REST 통신에서는 BODY 값 뿐만 아니라 헤더에도 값을 추가해서 요청에 필용한 데어터를 담아 보내는 경우가 많기 때문입니다.