API(Application Programming Interface)
요청과 응답을 구성하는 방법에 대한 정보
REST(Representational State Transfer)
서버와 클라이언트 통신 방법 중 하나로, http URI를 통해 자원을 명시하고 http method를 이용해 자원을 교환하는 통신 방법
- REST 아키텍처의 조건을 준수하는 API
- REST의 규칙을 모두 지켜 구현된 웹 서비스 => RESTful 하다!!
REST의 특징
- Server-Client 구조
- Stateless(무상태)
- Cacheable (캐시 처리 가능)
- Layered System (계층화)
- Uniform Interface (인터페이스 일관성)
REST의 장단점
장점 | 단점 |
http 프로토콜의 인프라를 그대로 사용하기 때문에 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다. | http method 형태가 제한적이다. |
http 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다. | 구형 브라우저에서는 호환이 되지 않아 지원해주지 못하는 동작이 많다.(IE) |
서버와 클라이언트의 역할을 명확하게 분리한다. |
RESTful이란?
Rest의 원리를 따르는 시스템으로 원리를 따르기만 하면 다 RESTful은 아니다.
원리를 따르면서 REST API 설계 규칙을 올바르게 지킨 시스템이 RESTful한 시스템이다.
DTO(Data Transfer Object)
- 계층 간 데이터 교환을 위해 사용하는 객체
- 다른 로직을 가지지 않는 순수한 데이터 객체 (Java Beans
VO(Value Object)
- DTO와 비슷하지만, VO는 read-Only 속성을 갖고 있는 객체
- Getter만 가지고 있어서 값에 대한 수정이 불가능하다. (Setter x)
DTO | VO | |
목적 | 계층간 데이터 전달 | 값 자체 표현 |
동등성 | 필드값이 같아도 같은 객체 x | 필드값이 같으면 같은 객체 |
가변성 | setter 존재 시 가변 | 불변 |
setter 비존재 시 불가변 | ||
로직 | getter/setter외의 로직이 필요하지 않음 | getter/setter외의 로직이 있어도 무방함 |
Bean
- Spring IoC 컨테이너가 관리하는 JAVA 객체
- Spring에서는 new를 이용해 만들어진 객체가 아니라 Spring에서 관리하는 Bean 이라는 객체를 이용한다.
장점
의존성 관리가 용이하다. | 똑같은 객체가 여러 번 만들어지는 것이 아니라 하나를 만들면 그것을 재 사용한다. => 메모리 절약 |
Bean 등록 방법
@Component
- 가장 쉬운 방법으로 클래스 선언부에 @Component를 사용하면 된다.
- 자바 설정 클래스를 직접 만들기
- 설정 클래스를 만들고 @Configuration 이용
- 해당 클래스 안의 메서드에 @Bean 이용
- Bean으로 등록된 객체를 의존성 주입받아 사용하려면 @Autowired를 사용하면 된다.
Annotation
- Java에서 @는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하게 해준다.
- 프로그램에게 추가적인 정보를 제공해주는 메타데이터
장점
- 코드량이 감소한다.
- 유지보수가 쉽다
- 생산성이 증가한다.
@Bean
개발자가 직접 제어 불가능한 외부 라이브러리 등을 Bean으로 등록하고자 할 때 사용되는 Annotation
@Component
- 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation
- 즉, 간단하게 Bean을 등록하기 위해 사용되는 Annotation
@SpringBootApplication
- @Configuration, @EnableAutoConfiguration, @ComponentScan, 이 3가지가 합쳐진 Annotation
- Spring Boot 어플리케이션 실행 초기 진입점에 위치하는 Annotation
@Autowired
- 스프링 컨테이너에 등록한 Bean 에게 의존 관계 주입이 필요할 때, DI(의존성 주입)을 도와주는 어노테이션
- 즉 @Autowired를 사용한 클래스에서 적용된 클래스를 사용할 수 있게 해준다.
'Sesac 웹 풀스택[새싹X코딩온] > Spring' 카테고리의 다른 글
6. JPA(Java Persistence API) 및 실습 (0) | 2023.03.16 |
---|---|
5. JDBC, MyBatis 연결 (0) | 2023.03.16 |
4. GET, POST 방식 및 DTO, VO 전송 (0) | 2023.03.16 |
2. Spring Boot 사용하기(feat: Intellij, Spring initializer, thymeleaf) (0) | 2023.03.09 |
1. Spring framework 특징 (0) | 2023.03.09 |