지난 3번째 글에서
1) mybatis-config.xml 을 설정 했다.
2) mappers 폴더에 쿼리가 들어 있는 UserMapper.xml을 만들었다.
3) UserMapper 의 interface class 를 만들었다.
4) UserMapper 가 select 하고 값을 담을 dto class를 만들었다.
이번에는 Postman (UI역활) 에서 rest요청을 하면 요청을 받는 service 단을 만들고,
Spring boot 를 start 시킨후
실제 쿼리가 실행 되면서 정상 작동이 되게 하는 일을 할것이다.
1. Service 를 만든다.
보통 다른 예제 보면 Controller 따로 Service 따로 만들지만 난 Controller 하나 만들고 Controller에서
바로 Mapper 호출 하는 구조로 갔다.
package com.example.myproject.biz.service;
import com.example.myproject.biz.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api") // API 기본 경로
public class MyService {
@Autowired
private UserMapper userMapper;
// ID로 사용자 정보 조회
@GetMapping("/user/{id}")
public User getUserById(@PathVariable("id") int id) {
return userMapper.getUserById(id); // MyBatis Mapper 직접 호출
}
}
낯선게 또 보여서 놀래는 사람이 있을수 있다.
@PathVariable <-- Spring 에서 쓰는 annotaion으로 Restful 요청시 요청 주소의 일부의 값이 메소드를 호출 할때
매개 변수로 쓰여 진다는 의미이다.
위의 예는 Postman 에서 /user/13 하면 13이라는 값이 getUserById 를 호출 할때 매개변수로 정의된 id 에 담긴다는
의미로 즉 호출시 13을 넣어서 getUserById() 메소드가 호출 되는 것이다.
2. Postman을 설치 한다.
설치하는 내용은 아래 링크를 참조한다.
3. Intellj 에서 myproject 를 run 시키고, Postman 에서 요청을 발생 시킨다.
Intellj 에 있는 myproject 부터 run 시키기가 쉽지 않다.
run 시키는 방법도 다양하다.
1) maven 일때
- 난 gradle을 이용 했으므로 이 방법은 안쓴다.
만약 spring boot project 를 spring initializr 로 만들때 maven 을 선택 했다면 아래 처럼 명령어를 쳐보길 바란다.
./mvnw spring-boot:run
2) gradle 일때
./gradlew bootRun
3) 묻고 따지지 않고 Intellj 에서 화살표 클릭
난 2)번을 했더니 막 에러가 나서 어쩔수 없이 3번을 했다.
쉽게 한번에 되는게 없다.
이게 느리게 가는 내 인생인가!!!


Postman 에서 아래처럼 한다.
- http://localhost:8080/api/user/1

문득 드는 질문..
MyprojectApplication.java 라는 파일이 맨 상위 루트에 존재 하고 안에 main메소드가 존재 한다.
RESTful을 받아서 작동 할 건데도 해당 파일의 main 메소드 수정 안하고 그대로 써도 되는건가?
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyprojectApplication {
public static void main(String[] args) {
SpringApplication.run(MyprojectApplication.class, args);
}
}
==>답변
네, 위의 MyprojectApplication.java는 Spring Boot 프로젝트의 기본 진입점으로, Spring Initializr에서 생성된 그대로 사용해도 문제없습니다.
이 파일에서 아래 부분은 필수입니다:
- @SpringBootApplication: 이 애노테이션은 프로젝트의 설정을 초기화하고 컴포넌트 스캔을 수행합니다.
- public static void main(String[] args): Java 프로그램의 진입점으로, Spring Boot의 내장 서버(Tomcat)를 실행하는 역할을 합니다.
- SpringApplication.run(...): 애플리케이션을 시작합니다.
따라서 Postman으로 요청을 처리할 때도 이 파일이 반드시 필요합니다.
4. DB 처리가 잘 된걸 확인 한다. 라고 쓰기 전....
아 db에 table 을 만들지 않았다.
아래 스크립트로 db table을 만든다.
create table users
(
id number,
name varchar2(30),
email varchar2(30)
);
insert into users(id, name, email) valueS( 1, 'robin', 'robin@wood.com');
commit;
과연 ..결과는..
역시 한번에 될리가 없다.
IT 20년 넘게 하면서 한번에 되는게 손에 꼽힌다.
Postman은 500번 에러를 뱉어내니
Server가 요청을 이상하게 처리 한거고
Server 는 Server 대로 알수 없는 에러를 뱉어낸다.
에러 잡는건 다음화에..


오늘도 읽어주셔서 감사합니다.
'SI 업무 > 나만의 프로젝트 만들기' 카테고리의 다른 글
| 5. RESTful 에러 잡기 2 (0) | 2024.11.25 |
|---|---|
| 5. RESTful 에러 잡기 1부 (0) | 2024.11.24 |
| 3. Spring Boot Properties 설정 (1) | 2024.11.22 |
| 2. Spring boot 프로젝트 만들기 with Spring initializr (0) | 2024.11.21 |
| 1-1. 우분투에 Intellij 바로가기 넣기 (1) | 2024.11.20 |