boardList
게시판 목록 페이지 생성


controller에 추가
- BoardController.java

domain에 추가
- BoardVo.java, Criteria.java, PageMaker.java, SearchCriteria.java eclipse에서 그대로 복사

persistance에 추가
- BoardService.java

- BoardServiceImpl.java

mybatis_config.xml에 추가
- type-alias 지정
- XML 설정 파일에서 클래스 이름을 간단한 별칭으로 정의
- 코드 가독성 향상, 설정 파일 간결
- 패키지 경로가 긴 경우 유용
- XML을 통해 빈을 등록할 때 클래스의 풀 네임 대신 별칭을 사용하여 등록할 수 있도록 해줌

boardMapper.xml 추가

HashMap
- Spring에서 HashMap은 일반적으로 데이터를 저장하거나 전달할 때 자주 사용되는 java.util.Map의 구현체 중 하나
- HashMap을 활용하여 데이터를 key-value형태로 저장 및 쉽게 조회
- REST API에서 JSON 응답 데이터로 사용하기에 적합
- Spring에서는 주로 Controller, Service, Repository 레이어 간 데이터를 전달하거나 응답할 때 자주 사용
- 개념 설명
- java.util 패키지에 포함된 데이터 구조, key-value 형식으로 데이터를 저장하는 자료구조
- 특징
- key는 유일 : 각 key는 고유해야 하며, 같은 key가 두 번 이상 존재할 수 없음
- value는 중복 가능 : 값(value)은 중복될 수 있으며, 같은 value를 여러 key에 할당할 수 있음
- 빠른 조회 : 해시 테이블을 사용해 내부에서 저장하고, 조회 속도가 매우 빠름
- 비동기적 : HashMap은 스레드에 안전하지 않아 멀티스레드 환경에서는 문제가 발생할 수 있음. 동기화가 필요한 경우 ConcurrentHashMap 사용 권장
Spring 프로젝트에서 HashMap 사용 예제
- @RestController : Spring MVC에서 RESTful 웹 서비스를 쉽게 구현할 수 있는 어노테이션. 이 클래스의 모든 메서드는 JSON 형태로 데이터 반환
- @GetMapping("/greet") : /greet URL로 들어오는 GET 요청을 greetUser 메서드에서 처리. 예를 들어 /greet?name=John 요청이 오면 greetUser()가 실행
- Map<String, Object> response : HashMap으로 데이터를 저장하여 응답으로 사용. response 변수는 key-value 형태로 구성된 데이터를 담고 있음
- message 키 : 사용자에게 보낼 인삿말
- status 키 : 성공 여부를 담는 문자열
- code 키 : HTTP 응답 코드와 유사한 형태로 응답 상태 전달
- JSON 형식으로 자동 변환 : 반환된 HashMap 객체는 Spring이 JSON으로 변환해 응답으로 전송
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class ExampleController {
@GetMapping("/greet")
public Map<String, Object> greetUser(@RequestParam String name) {
Map<String, Object> response = new HashMap<>();
response.put("message", "Hello, " + name + "!");
response.put("status", "success");
response.put("code", 200);
return response;
}
}
- 실행 예시
- URL이 /greet?name=Alice일 경우, 아래와 같은 JSON 반환
{
"message": "Hello, Alice!",
"status": "success",
"code": 200
}
HashMap의 Spring 사용 장점
- 유연성 : 다양한 데이터를 저장하기에 유연하며 여러 타입의 데이터를 한 곳에 담을 수 있음
- 가독성 : JSON 형식으로 변환될 때 key-value 형태의 직관적인 구조로 나타나므로 REST API 응답으로 적합
- 간단함 : 간단한 데이터를 구성하거나 반환할 때 DTO(Data Transfer Object) 클래스 정의 없이도 빠르게 사용 가능
주의사항
- 동기화 문제 : HashMap은 비동기적이므로 멀티스레드 환경에서는 ConcurrentHashMap을 사용하는 것이 안전
- 타입 안정성 : 다양한 타입의 데이터를 담을 수 있지만 잘못된 타입을 넣거나 가져올 때 ClassCastException이 발생할 수 있음