Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준9012
- 이것이자바다
- 백준10828
- 백준스택
- 백준
- 백준가운데를말해요
- 2019카카오코테
- 백준온라인저지
- 백준평범한배낭
- 웹개발기초
- 카카오코테
- 윤곽선검출
- 확인문제
- 코딩테스트실력진단
- BOJ
- KT포트포워딩
- 가운데를말해요
- 코드트리
- 백준괄호
- BOJ1655
- 스파르타코딩클럽
- 운영체제
- 합성곱연산
- java
- 이것이자바다9장
- 코테
- 딥러닝
- 이것이자바다확인문제
- 컴퓨터비전
- 냅색알고리즘
Archives
- Today
- Total
코딩하는 락커
[Spring Boot를 이용한 RESTful Web Services 개발] 11~12강 본문
🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service
[Spring Boot를 이용한 RESTful Web Services 개발] 11~12강
락꿈사 2022. 2. 5. 10:56User Domin
- Domain : Domain Knowledge, 즉 인간 활동 영역, 혹은 자율적인 컴퓨터 활동과 같은 어떤 특정한 전문 분야에서 사용되어지는 업무 지식을 뜻함
- 사용자 관리를 위한 Domain Knowledge(User)는 사용자 정보를 어떤 형태로 저장하고 어떤 데이터를 저장할 것인지에 대해서 나타낸 것. 사용자의 이름, id, 회원가입 날짜 같은 정보를 저장.
package com.example.restfulwebservice.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@Data
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Date joinDate;
}
UserDaoService
- Service : 비즈니스 로직을 작성하는 클래스
- ex) 사용자 전체 목록 조회, 사용자 정보 추가, 사용자 정보 상세 보기 등
- Dao : 데이터 베이스 관련 로직을 작성하는 클래스
- 데이터베이스를 연동하지 않을 경우 Dao 클래스와 Service 클래스를 함께 작성
package com.example.restfulwebservice.user;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class UserDaoService {
private static List<User> users = new ArrayList<User>;
private static int userCount = 3;
//데이터베이스에 3개의 데이터가 들어있다고 가정
static {
users.add(new User(1, "roxy", new Date()));
users.add(new User(2, "yujin", new Date()));
users.add(new User(3, "kyj", new Date()));
}
// 모든 사용자를 조회하는 메소드
public List<User> findAll(){
return users;
}
// 새로운 사용자를 추가하는 메소드
// 매개변수로 전달된 user 안에 id가 존재하지 않을 경우 ++userCount 하여 id 생성. 그리고 그 값을 DB역할을 하는 List<user> users에 추가하고 id가 셋팅된 상태의 정보를 return
public User save(User user){
if(user.getId()==null){
user.setId(++userCount);
}
users.add(user);
return user;
}
//id로 사용자를 찾는 메소드
public User findOne(int id){
for(User user : users){
if(user.getId() == id){
return user;
}
}
return null;
}
}
User Controller
- Bean : 스프링에서 선언되어 관리되는 인스턴스. 용도에 따라서 Contoller Bean, Service Bean, Repository Bean으로 선언해서 사용함.
- 의존성 주입을 통해서 스프링 프레임워크가 Bean을 관리하게 함. 의존성 주입은 xml 설정 파일, Class에서 setter, 생성자, 메소드 등을 통해서 가능함.
- 스프링 컨테이너에 등록된 Bean들을 사용하기 위해서는 컨테이너에 등록된 Bean의 참조값을 받아와서 사용해야 함.
- User Controller도 스프링 부트가 초기에 실행하면서 메모리에 등록한 Bean의 형태로 사용되어짐
- User Controller의 User Service도 의존성 주입을 이용해서 할당함.
package com.example.restfulwebservice.user;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
private UserDaoService service;
//생성자를 통한 의존성 주입
//생성자의 매개변수를 통해서 전달하고자 하는 객체의 인스턴스를 넣어주고, 전달되어진 인스턴스를 멤버 필드로 할당하면 됨.
//매개변수로 넣어준 UserDaoService 클래스에 @Service 어노테이션 붙여줘야 함
public UserController(UserDaoService service){
this.service = service;
}
//전체 사용자 목록을 조회하는 메소드 등록
//endpoint로 /users를 호출했을 경우 이 메소드가 실행됨
@GetMapping("/users")
public List<User> retrieveAllUsers(){
return service.findAll(); //service의 전체 사용자 목록 조회 메소드 반환
}
//사용자 상세보기
//사용자의 고유한 key값(id) 필요
//endpoint로 /users/{id}를 호출했을 경우 이 메소드가 실행됨
//GET /users/1 or /users/10
//path variable은 항상 문자 형태로 전달. 여기서 선언한 path variable의 타입으로 자동 변환됨
@GetMapping("/user/{id}")
public User retrieveUser(@PathVariable int id){ //path variable을 사용하고 있기 때문에 @PathVariable 사용
return service.findOne(id);
}
}



'🍃 Spring > 🌱 Spring Boot를 이용한 RESTful Web Service' 카테고리의 다른 글
[Spring Boot를 이용한 RESTful Web Services 개발] 16강 (0) | 2022.02.07 |
---|---|
[Spring Boot를 이용한 RESTful Web Services 개발] 13~15강 (0) | 2022.02.06 |
[Spring Boot를 이용한 RESTful Web Services 개발] 9~10강 (0) | 2022.02.05 |
[Spring Boot를 이용한 RESTful Web Services 개발] 8강 (0) | 2022.02.04 |
[Spring Boot를 이용한 RESTful Web Services 개발] 6~7강 (0) | 2022.02.04 |
Comments