온라인 강의/Spring Framework

[스프링 MVC 1편] 웹 페이지 만들기

코드몬스터 2024. 6. 9. 13:38
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을 넣는 것은 주의해야한다.

 

HTML 적용 예시