1. 프레임워크란?

개발에 필요한 구조를 이미 코드로 만들어 놓아 필요한 부분을 조립하는 형태의 개발 방식 또는 환경을 말한다.

2. 스프링 프레임워크 주요 특징

2.1. POJO (Plain Old Java Object)

객체간의 관계를 구성할 때 별도의 API를 사용하지 않고 일반적인 JAVA 코드를 이용해서 그대로 스프링에서 사용이 가능하다.
"개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다"

2.2. 제어의 역행 (IoC)

먼저 제어의 역행은 메서드나 객체의 호출작업을 개발자가 결정하는 것이 아닌 외부에서 결정하는것을 말한다.
ex) 컴퓨터 조립에서 메인보드를 결정 후 그에 맞는 부품을 개발하고 메인보드가 호출 하는것과 같이,
개발자는 프레임워크의 부품을 개발하고 조립하는 방식의 개발을 하는 방식이다. 최종호출은 프레임워크에 위임한다.

2.3. 의존성 주입 (DI)

2.3.1. 의존성 주입을 통한 객체간의 관계 구성

제어의 역전이 일어날 때 스프링 내부객체(스프링 빈)들간의 관계를 관리할 때 사용하는 기법이다.

  • 생성자를 통한 주입
  • set 메서드를 이용한 주입
  • 애노테이션으로 처리가 가능함.
    API 종속성을 줄여준다. (XML만 바꿔주면 편리하게 개발가능)
    외부에서 생성한것을 생성자나 setter를 이용하여 가져오는 방식을 사용한다.2.3.2. 의존성 주입의 장점필수로 사용되어야만 하는 레퍼런스가 없을 경우 인스턴스의 생성 자체를 막아 오작동, 의도와 다른 개발을 막아준다.

3. 컨테이너

서블릿의 생명주기를 관리한다. JSP를 서블릿으로 변환하는 기능 수행함.
서블릿 컨테이너 : 표준 API에서는 추상 클래스와 인터페이스를 구현한 클래스를 제공하여 기본 동작과 API 호환성을 지원한다.
다른 컨테이너와 호환성을 보장하기 위해서.
JSP 컨테이너 : JSP -> 서블릿 변환 역할

4. ASP

동적으로 서버에서 작동하는 페이지

비쥬얼 베이직에서 나온것으로 비쥬얼베이직 스크립트 이후 나온것이 ASP.net
원도우에서 운영체제 기반으로 작동하기 때문에 윈도우 보안문제와 같이 연결되며 취약점이 동일하다.
클라이언트가 요청시 서버에서 처리를 하여 HTML로 바꾸어 응답한다.

5. JSP ( JAVA Server Page )

HTML내에 자바 코드를 넣어 웹서버에서 동적으로 웹페이지를 생성하여 브라우저에 돌려주는 언어이다.
Server side 스크립트 언어

6. 작동 순서

브라우저가 웹 서버에 요청 정보를 전달 -> 웹 서버는 WAS에 전달 -> Web Container에 의해서 JSP로 작성된 코드가 서블릿 코드로 변환

7. 서비스 추상화

스프링은 서블릿 애플리케이션을 만들지만 서블릿 코드를 사용하지 않는다. doPost, doGet 실행하지 않고 애노테이션을 이용해 Mapping 한다. 서블릿을 직접 사용하지 않아도 괜찮아서 편리한 장점이 있다.

여러가지 기술로 바꾸기가 용이하다. ex) 스프링부트 + 톰캣 -> 스프링부트 + 네티

스프링 부트는 웹 컨테이너가 있어 편하고 간편한 규모의 개발에 적합하다. / 일반 스프링에서는 MVC를 하여 WAS 배포를 진행

8. 스프링 MVC 구조

  1. 사용자의 모든 요청은 스프링 MVC의 Front Controller에게 전달된다.
  2. 전달된 요청은 적절한 Controller를 호출
  3. Controller의 작업이 개발자의 몫이며, 적절한 서비스를 찾아 호출한다.
  4. 서비스는 데이터 베이스의 작업을 담당하는 DAO를 이용해서 데이터를 호출한다.
  5. DAO 객체는 MyBatis를 이용하는 Mapper를 통해서 원하는 작업 수행
  6. 서비스가 처리한 데이터를 Controller에 전달.
  7. Controller는 Front Controller에게 전달
  8. Controller는 다시 스프링에 데이터를 전달

9. XML 파일의 역할

스프링 MVC 애노테이션 처리 설정을 XML에 하여 편리하게 변경 가능하다.
JSON 처리는 POM.xml에 jackson-databind 라이브러리를 추가

10. DataBase의 제어

DB 제어용으로 DAO를 만든다. 향후 DB 관련 기술이 변해도 DAO만 변경해서 처리한다.
SQL 문은 XML Mapper로 작성하고 DAO 인터페이스를 구현하는 클래스를 만들고, 그 클래스를 root-context.xml에 빈을 등록한다.
(애노테이션 설정)

11. REST

Representational State Transfer 의 약자 ( 자원의 표현에 의한 상태 전달 )
자원이란 소프트웨어가 관리하는 모든 데이터를 의미하며, 자원의 표현이란 데이터의 이름을 말한다.
ex) 유저 정보가 자원일 때, 'users'를 자원의 표현으로 하는 것

JSON 또는 XML를 통해 데이터를 주고 받는 것이 널리 알려진 방법
@RestController 스프링버전 4 부터 지원한다. 뷰를 안만들고 REST 방식 데이터를 처리 할 수 있다.

11.1. REST 방식 원칙

  • URI 가 원하는 리소스를 의미한다.
  • URI 에는 식별 할 수 있는 데이터를 같이 전달. HTTP의 전송 방식이 실제 작업의 종류를 의미한다.
    보통 URI는 정보의 목적지를 의미한다.

11.2. REST FULL

REST API의 설계 의도대로 지키는것을 REST FULL하다고 한다. 서버는 클라이언트에게 API만 제공

12. GET 방식 POST 방식

GET : 데이터 값을 URL 뒤 ? 다음에 붙여 통신하는 방식. URL 형식에 맞는 인코딩 필수
POST : 데이터를 HTTPBODY에 넣어 통신하는 방식. GET과 달리 브라우저에서 캐싱 불가능. 크기 제한X

GET 은 단순 조회용에 적합하며, 서버의 상태나 값 변경은 POST 를 이용

반응형

+ Recent posts