-
[스프링MVC - 1편] 스프링 MVC - 웹 페이지 만들기 (1)스프링&스프링부트 2025. 1. 30. 12:14
서비스 흐름
상품 도메인 개발
1. Item - 상품객체
@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; } }
2. ItemRepository - 상품 저장소
@Repository public class ItemRepository { private static final Map<Long, Item> store = new HashMap<>(); // 멀티스레드 환경에서 여러개가 store 접근하는 경우 hashMap 사용하면 안됨 > ConcurrentHashMap<>() 사용 private static long sequence = 0L; 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(); } }
3. ItemRepositoryTest - 상품 저장소 테스트
class ItemRepositoryTest { ItemRepository itemRepository = new ItemRepository(); @AfterEach void afterEach() { itemRepository.clearStore(); } @Test void save() { // given Item item = new Item("itemA", 10000, 10); // when Item savedItem = itemRepository.save(item); // then Item findItem = itemRepository.findById(item.getId()); assertThat(findItem).isEqualTo(savedItem); } @Test void findAll() { // given Item item1 = new Item("item1", 10000, 10); Item item2 = new Item("item2", 20000, 5); itemRepository.save(item1); itemRepository.save(item2); // when List<Item> result = itemRepository.findAll(); // then assertThat(result.size()).isEqualTo(2); assertThat(result).contains(item1, item2); } @Test void update() { // given Item item = new Item("item1", 10000, 10); Item savedItem = itemRepository.save(item); Long itemId = savedItem.getId(); // when Item updateParam = new Item("item2", 20000, 20); itemRepository.update(itemId, updateParam); // then Item findItem = itemRepository.findById(itemId); assertThat(findItem.getItemName()).isEqualTo(updateParam.getItemName()); assertThat(findItem.getPrice()).isEqualTo(updateParam.getPrice()); } }
상품 서비스 HTML
부트스트랩
https://getbootstrap.com/docs/5.0/getting-started/download/
다운로드 후 css파일 속 bootstrap.min.css 복사 후 해당 경로에 붙여 넣기
intelliJ 재실행 후 해당 주소로 정상작동 확인
HTML, css 파일 추가
- /resources/static/html/items.html
- /resources/static/html/item.html
- /resources/static/html/addForm.html
- /resources/static/html/editForm.html
- 참고
이렇게 정적 리소스가 공개되는 /resources/static 폴더에 HTML을 넣어두면, 실제 서비스에서도 공개된다
서비스를 운영한다면 지금처럼 공개할 필요없는 HTML을 두는 것은 주의
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링MVC - 2편] 타임리프 기본기능 (1) (0) 2025.01.31 [스프링MVC - 1편] 스프링 MVC - 웹 페이지 만들기 (2) (0) 2025.01.30 [스프링MVC - 1편] 스프링 MVC 기본기능 - 4 (1) 2025.01.29 [스프링MVC - 1편] 스프링 MVC 기본기능 - 3 (0) 2025.01.29 [스프링MVC - 1편] 스프링 MVC 기본기능 - 1 (0) 2025.01.28