1. Spring MVC 에서의 컴포넌트
1) MVC 패턴
- 모델, 뷰, 컨트롤러의 약자로 디자인패턴의 하나
- 비지니스 처리 로직과 사용자 인터페이스를 구분시켜 서로 영향없이 개발이 가능하다는 장점
(1) Model
- 어플리케이션이 무엇을 할지에 대해 정의
- 처리되는 데이터, 데이터베이스, 내부 알고리즘 등 내부 비즈니스에 관한 로직의 처리를 수행
- 즉, 사용자에게 보이지 않는 로직
- Spring 에서는 JavaBean 이 해당됨
(2) View
- 말 그대로 사용자에게 보여지는 영역
- Spring 에서는 JSP 등 사용자 인터페이스
(3) Controller
- 모델에게 어떻게 할것인지를 알려주며 모델과 뷰 사이를 연결하는 역할
- 사용자의 입출력을 받아 데이터 처리
- Spring 에서는 Java Class 가 해당됨
2) 컴포넌트
- 구성요소라는 뜻
- 독릭적인 단위 모듈로 유저가 사용하는 시스템에 대한 조작장치를 이야기함
(1) @Component
- 개발자가 직접 작성한 Class 를 Bean 으로 만드는 것
- 싱글톤 클래스 빈을 생성하는 어노테이션이며 @Scope("Porototype")를 통해 싱글톤이 아닌 방식으로도 생성가능
- @Service, @Repository 어노테이션 또한 이에 포함
- 패키지 스캔안에 이 어노테이션은 이 클래스를 정의했으니 빈으로 등록하라는 뜻
- ComponentScan 은 Component 어노테이션이 붙은 클래스를 검색
(2) @Bean
- 개발자가 작성한 메서드를 통해 반환되는 객체를 Bean 으로 만드는 것
- 주로 @Configuration 어노테이션이 들어간 Spring 을 설정하는 클래스 내에 들어가는 메소드에서 선언
2. 컨테이너란?
- 프레임워크 안에서 인스턴스들의 생명주기를 관리하며 생성된 인스턴스들에게 추가적인 기능을 부여
- 내가 작성한 코드의 처리과정을 컨테이너에서 수행
- 스프링 컨테이너는 스프링 프레임워크 핵심에 위치하며 DI 를 통해 애플리케이션을 구성하는 컴포넌트들을 관리
3. IOC 란?
- Inversion Of Contol, 제어의 역행이라는 뜻
- 인스턴스의 생성 및 소멸을 개발자 대신 스프링컨테이너가 함
- 제어권을 프레임 워크에서 가저간다는 말로도 쓰임
4. DI 란?
- Dependency Injection 의존성 주입이라는 뜻으로 IOC 를 실제로 구현하는 방법
- 의존성이 있는 컴포넌트를 개발자가 코드로 명시하는 것이 아니라 Spring 이 런터암에서 연결해 처리해줌
5. Bean 객체란?
- 자바에서 POJO(Plain Old Java Object) 로 XML 설정파일을 통한 생명주기, 종속성 등의 메타데이터를 가지고
스프링 컨테이너에서 생성된 객체
- 컨테이너에서 생성되었다는 점을 제외하면 일반 자바 객체오 ㅏ동일
6. DTO, DAO, VO 란?
1) DTO
- Data Transfer Object 의 줄임말로 VO 와 같이 값을 갖고 있는 객체
- VO 와 차이점은 DB 로 치자면 하나의 인스턴스로, 데이터 핸들링에 사용되는 객체
- DTO 를 통해 데이터를 전달할 수 있음
2) DAO
- Data Access Object 의 줄임말로 실제 DB 에 접속하는 객체
- Service 와 DB 사이에서 가져온 데이터를 엔티티로 변환시켜 가져옴
- 대부분의 CRUD API 제공
3) VO
- Value Object 의 줄임말로 값을 가지고 있는 객체
- 비지니스 값을 가져올 때 사용하며, 보통 값을 수정할 수 없는 것으로 한다
- DTO 와 혼용해 쓰기도 함
7. Restful 이란?
- Represental State Transfer의 약자 자원을 표현하여 상태를 전달한다는 뜻
- 웹에 있는 자원을 HTTP 를 통하여 직관적으로 전달하기 위한 간단한 인터페이스
- 대부분의 데이터를 JSON 형식이나 XML 을 담아서 HTTP 프로토콜 위에서 통신하는 API
- 아래와 같은 REST 법칙에 통과한 것을 말함
1) 자원
2) 메서드 (GET, POST, PUT, DELETE) 만으로 표현
3) 동사말고 명사
4) 확장자는 포함하지 않음
5) 예) naldo 라는 사용자를 찾는 URL 메서드를 설계할 때 /users/naldo (GET) 이 됨
'CS 전공지식' 카테고리의 다른 글
24.02.20 백엔드 관련 (0) | 2024.02.20 |
---|---|
24.02.16 웹과 통신 (1) | 2024.02.16 |
24.02.14 웹, 네트워크 관련 (0) | 2024.02.14 |
24.02.13 Java 관련 4 (1) | 2024.02.13 |
24.02.07 Java 관련 3 (1) | 2024.02.08 |