728x90
현재 문제점
정확한 에러의 이유는 모르겠지만, 타임리프의 templates/basic 경로를 handler에서 못 잡고 있다.
로깅 메세지가 info이면 에러가 안 보여서 시간을 많이 낭비했다...
(보여야 되는거 아닌가..ㅠㅠ)
이 부분을 해결해야 강의를 계속 들을 수 있을 것 같다....
요구사항 분석
상품을 관리할 수 있는 서비스 만들기
상품 도메인 모델
- 상품 ID
- 상품명
- 가격
- 수량
상품 관리 기능
- 상품 목록
- 상품 상세
- 상품 등록
- 상품 수정
상품 도메인 개발
상품 객체
package hello.itemservice.domain.item;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
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;
}
}
상품 Repository
@Repository
public class ItemRepository {
// 멀티 쓰레드로 동시 접근하는 경우, HashMap과 Long은 문제가 될 수 있다.
private static final Map<Long, Item> store = new ConcurrentHashMap<>();
private static Long sequence = 0L; // atomic long
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());
}
public void update(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();
}
}
상품 서비스 HTML
부트스랩 사용
주의 사항
- /resources/static 폴더에 HTML을 넣어두면, 실제 서비스에서도 공개된다.
- 서비스를 운영한다면 공개할 필요없는 HTML을 넣는 것은 주의해야한다.
'온라인 강의 > Spring Framework' 카테고리의 다른 글
[강의] 스프링 MVC 2편 - 예외 처리와 오류 페이지(섹션8) (0) | 2024.06.15 |
---|---|
[강의] 스프링 MVC 2편 - 필터, 인터셉터(섹션7) (0) | 2024.06.15 |
[스프링 MVC 1편] 구조 이해 (0) | 2024.05.25 |
[스프링 MVC 1편] MVC 프레임워크 만들기 (0) | 2024.05.19 |
[스프링 MVC 1편] 서블릿, JSP, MVC 패턴 (0) | 2024.05.11 |