민팽로그

웹 개발의 봄, spring - 1주차 본문

🍃spring boot/웹 개발의 봄, spring

웹 개발의 봄, spring - 1주차

민팽 2021. 7. 30. 19:14
spring framework?  자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.

웹 서비스

 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템으로, 웹 서비스 프로토콜 스택은 SOAP, WSDL, UDDI 등으로 이루어진다. 모든 메시징에 XML이 사용되어 상호운용성이 높으며 최근에는 무거운 SOAP를 사용하지 않는 REST 스타일 웹 서비스가 각광받고 있다. 웹서비스의 기본 구조는, 클라이언트에서 원하는 데이터가 있을 때마다 서버에 요청하고, 응답 데이터를 받아 사용자에게 보여주는 것이다.

  • 클라이언트: 사용자가 보는 화면. 웹사이트로는 크롬 브라우저나 edge; 앱으로는 앱 자체의 화면이다. 클라이언트가 네트워크를 통해 서버라는 다른 컴퓨터 시스템 상에 있는 서비스를 요청하면 서버로부터 반환되는 응답을 통해 사용자에게 적절한 방식으로 표현하는 기능을 갖는다.
  • 서버: 데이터가 있는 곳으로, 클라이언트가 원하는 데이터를 네트워크를 통해 요청하면, 이에 응답해주는 곳이다. 

웹 서비스를 제작한다는 것은 기본적으로 사용자가 보는 웹 화면을 만들고, 필요한 데이터를 요청할 수 있는 서버를 만드는 것이다.

 

데이터를 주고받기 위한 웹 동작 개념

API를 통해 서버에 정해진 약속대로 정보를 요청하면 서버가 DB에 접근하여 요청에 해당하는 정해진 정보를 돌려줌.

 

 

IntelliJ(인텔리제이)로 스프링 부트 시작하기

나는 여태까지 자바 프로젝트를 위해 이클립스만 사용해봤기 때문에 인텔리제이는 매우 생소하다. 일단 스프링 부트를 사용하기 위해서 인텔리제이 Ultimate가 필요한데 이는 기업용으로 유료이다. 학생이라면 학교 인증을 하면 1년단위로 사용할 수 있다.

1. New Project 클릭

2. Spring Initializr -> Next

3. Gradle , java, java-version 8사용 -> Next

이 강의에서는 Gradle을 사용했다. 프로보노 프로젝트를 하면서 구글링을 통해 공부를 하는데 Maven이 훨씬 많았는데   gradle과 maven의 선택 기준을 잘 모르겠다.

 

4. Lombok, Spring Web, Spring Data JPA, H2 Database, MysQL Driver 사용

  • Lombok: 자동으로 코드를 줄여줄 수 있는 기능. 예를 들어 클래스의 멤버변수를 위한 Getter, Setter 함수를 @Getter, @Setter 어노테이션을 사용함으로써 직접 코드를 작성하지 않고도 사용할 수 있다. 
  • H2 Database: 자바로 작성된 관계형 데이터베이스 관리 시스템으로, 자바 애플리케이션에 임베드하거나 클라이언트-서버 모드에서 구동할 수 있다. 간단히 DB 테스트용으로 사용하기 좋다. 별도로 설정해주지 않는다면 메모리상에서 동작하기 때문에 서버를 내리면 DB가 초기화됨.
  • JPA: ORM 기술의 하나로 객체지향적으로 DB에 접근하기 위해 사용한다. 객체를 DB의 테이블과 매핑시켜줌. sql문을 사용하지 않고도 DB를 다룰 수 있지만 JPA를 잘 모르고 사용하면 설계가 잘못될 수 있음..

    *ORM: 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법

 

5. .Application파일 실행 -> localhost:8080으로 접속 가능

 

 

Gradle

일단은  그루비를 이용한 빌드 자동화 시스템임. 자바스크립트의 npm, 파이썬의 pip같이 다른 사람들이 만든 코드들을 사용할 수 있도록 도와주기도 함! (아래 과정 참고)

  1. Maven Repository 에서 원하는 라이브러리 를 찾는다.
  2. build.gradle 에 원하는 프로젝트 파일을 넣는다.
  3. dependencies 옆 Run 버튼을 누른다.
  4. 우측 Gradle 탭의 새로고침 버튼을 누른다.
  5. 대상 프로젝트가 추가된 것을 확인한다.
RestController 를 사용하여 응답
  • Rest? 서버의 응답이 JSON 형식임을 나타냄. HTML, CSS 등을 주고받을 때는 Rest 를 붙이지 않는다.
  • Controller?클라이언트의 요청(Request)을 전달받는 코드로, JSON 만을 돌려주는 것은 RestController라고 함.
    @RestController
    public class CourseController {
    
        @GetMapping("/courses")
        public Course getCourses() {
            Course course = new Course();
            course.setTitle("웹개발의 봄 스프링");
            course.setDays(35);
            return course;
        }
    }​
    위와 같이 @RestController 어노테이션을 붙여서 만들 수 있음.
Comments