💻본 포스팅은 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한'님의 강의를 듣고 작성되었습니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
[상품 도메인 개발]
[Item class]
package hello.itemservice.domain.item;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
//@Getter @Setter를 사용하는 것이 안전함
@Data
public class Item {
private Long id;
private String itemName;
private Integer price;
private Integer quantity;
public Item() {
}
public Item(String itemName, Integer price, Integer quantity) {
this.itemName = itemName;
this.price = price;
this.quantity = quantity;
}
}
- @Data
- Getter, Setter, RequiredArgsConstructor, ToString, EqualsAndHashCode, Value 의 기능을 가짐
- 그러나 안전하지 않기에 @Getter @Setter 사용하는 것이 안전하다.
- DTO(단순히 데이터를 옮기는)의 경우엔 사용해도 되지만 이것도 경우에 따라 달라진다.
- @Getter @Setter
- 데이터의 보호를 위해서 사용한다
- getter 은 인스턴스 변수를 반환한다.
- setter 은 인스턴스 변수를 대입하거나 수정한다.
[itemRepository]
package hello.itemservice.domain.item;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class ItemRepository {
//실무 멀티쓰레드 환경에서는 HashMap이나 long 타입이 아닌 다른 타입을 사용한다 ~
private static final Map<Long, Item> store = new HashMap<>(); //실제로는 HashMap 사용 X
private static long sequence = 0L; // static
public Item save(Item item) {
item.setId(++sequence);
store.put(item.getId(), item);
return item;
}
public Item findById(Long id){
return store.get(id);
}
public List<Item> findAll(){
return new ArrayList<>(store.values());
}
//실제로 프로젝트를 진행할 때 id를 사용하지 않기 때문에 id를 제외한 나머지 DTO를 만드는 게 설계상 명확한 것이 낫다.
public void updateItem(Long itemId, Item updateParam){
Item findItem = findById(itemId);
findItem.setItemName(updateParam.getItemName());
findItem.setPrice(updateParam.getPrice());
findItem.setQuantity(updateParam.getQuantity());
}
public void clearStore(){
store.clear();
}
}
- 실무에서는 HashMap이나 Long 타입은 쓰지 않는다고 한다. 이를 주의해서 보도록 하자...
- @Repository가 붙은 클래스의 경우에는 Component Scan의 대상이 된다.
[Repository와 Service 패키지?]
- Repository 패키지
- DB에 접근하는 모든 코드가 모여 있는 패키지이다.
- Service 패키지?
- DB에 접근하는 코드는 Repository에 위임하고 비지니스 로직을 수행하는 코드를 Service 패키지에 넣어준다.
[Test 진행]
- 코드가 잘 돌아가는지 확인을 위한 Test 진행을 해준다.
[상품 HTML]
- HTML과 CSS를 사용해 정적 페이지를 생성한다.
- 서버 주소를 사용한 확인 방법
- 절대 경로 -> 탐색기를 사용한 정적 페이지 확인 방법
정적 리소스 공개는 별로기 때문에 이를 막으려면 다른 방법을 사용해야한다 다음 포스팅을 통해 알아보자.
'Back-End > Spring' 카테고리의 다른 글
[Spring MVC2][타임리프] - 템플릿 레이아웃 (0) | 2022.04.15 |
---|---|
[Spring MVC2][타임리프] - 템플릿 조각 (0) | 2022.04.15 |
[Spring MVC][웹 페이지 만들기] - 1. 요구사항 분석 (0) | 2022.04.04 |
[Spring MVC][HTTP 요청] - 3. 요청 메시지 - 단순 텍스트, JSON (0) | 2022.03.29 |
[Spring MVC][HTTP 요청] - 2. 요청 파라미터 - 쿼리 파라미터, HTML Form, @RequestParam, @ModelAttribute (0) | 2022.03.29 |