2024. 6. 14. 14:31ㆍSpring-Project
이전글 : https://codepracticeroom.tistory.com/200
이번에는 SpringBoot를 사용해서 웹서버를 만들고 Arduino에서 보내는 데이터가 정상적으로 잘 들어오는지 확인한다.
먼저 https://start.spring.io 에 접속 후 SpringBoot를 받는다.
Group, Artifact, Name에는 자신이 원하는 것을 적어도 된다.
자바는 17, SpringBoot 버전은 3.2.4를 사용한다.
DB는 MongoDB를 사용할 것이다.
필요한 Dependencies는 web, lombok, MongoDB, Thymeleaf 이다.
설정을 다 했으면 아래 GENERATE를 눌러 다운받는다.
다운로드한 파일의 압축을 풀고
IDEA를 실행해 다운받은 파일의 build gradle를 눌러 파일을 연다.
필자는 IntelliJ를 사용하였다.
먼저 이전에 했던 데이터가 잘 넘어오는지 확인해야 한다.
inospring패키지에 domain 패키지와 controller 패키를 만든다.
먼저 domain 패키지 안에 데이터 클래스를 만들어줘야 한다.
이름은 WeatherData로 하겠다.
Setter사용은 권장하지 않지만 간단한 토이프로젝트 이므로 Setter를 사용하겠다
lombok의 getter, setter를 넣어주고 온도와 습도 셋을 만들어 준다.
여기서 주의할 점은 JSON데이터로 받는 이름과 내 데이터의 이름이 같아야 한다.
나중에 포맷으로 바꿔줄 수 있지만 편의상 같은 이름으로 하는 것이 좋다.
@Getter
@Setter
public class WeatherData {
private String temperature;
private String humidity;
}
다음으로 controller 패키지 안에 DataController 클래스를 만든다.
컨트롤러 애노테이션을 쓰고 로그를 사용하기 위해 @Slf4j를 사용한다.
@Slf4j // 로그 출력
@Controller // 컨트롤러
public class DataController {
}
그다음 PostMapping으로 Json데이터를 받을 것이다.
받는 형태가 Json이므로 @ResponseBody와 @RequestBody를 사용한다.
@Slf4j
@Controller
public class DataController {
@ResponseBody
@PostMapping("/home")
public String postData(@RequestBody WeatherData weatherData){
log.info("temp={} hum={}", weatherData.getTemperature(), weatherData.getHumidity());
return "";
}
}
@Controller 대신 @RestController를 사용하면 @ResponseBody가 생략 가능한다.
Controller와 ResponseBody의 기능을 합친 것이 RestController이다.
로그를 적어 데이터가 잘 들어오는지 콘솔로 확인한다.
아두이노에 전원을 연결한 후 스프링을 실행한다.
데이터가 10초마다 잘 들어오는 모습을 확인할 수 있다.
'Spring-Project' 카테고리의 다른 글
Arduino와 SpringBoot를 사용한 온습도 측정 사이트(6) - SpringBoot편 (0) | 2024.06.17 |
---|---|
Arduino와 SpringBoot를 사용한 온습도 측정 사이트(5) - SpringBoot편 (0) | 2024.06.17 |
Arduino와 SpringBoot를 사용한 온습도 측정 사이트(3) - Arduino편 (0) | 2024.06.14 |
Arduino와 SpringBoot를 사용한 온습도 측정 사이트(2) - Arduino편 (2) | 2024.06.13 |
Arduino와 SpringBoot를 사용한 온습도 측정 사이트(1) - Arduino편 (0) | 2024.06.13 |