프로젝트 중 출력값이 일정한 것을 반복해서 보여줘야 할 때가 생겼다. 그러면 이 값들을 계속 저장 해 놓고 불러 오는 것 보다 기본적으로 세팅을 해 놓고 불러오는 게 어떨까 라는 생각이 들어 알아보았다.
application.properties
우선 원하는 내용을 application.properties 에 적어 준다.
# application.properties
myapp.message=Hello, World!
Controller
그 후 컨트롤러를 통해 properties 값을 가져온다.
properties의 값을 읽는 대표적인 @Value 어노테이션을 사용한다.
package com.example.myapp;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Value("${myapp.message}") // properties 파일에서 값을 가져옵니다.
private String message;
@GetMapping("/hello")
public String sayHello() {
return message; // 설정 파일에서 읽어온 값을 반환합니다.
}
}
위의 코드에서 @Value("${myapp.message}")는 application.properties 에서 myapp.message 키의 값을 주입받아 message 필드에 할당한다. 그리고 sayHello() 메서드에서 해당 값을 반환 하게 된다.
프로젝트를 실행하고 "/hello" 엔드포인트로 요청을 보내면 Hello, World!라는 값을 얻게 될 것이다.
그렇다면 이제 어떻게 데이터베이스에 이 값을 넣어야 할까?
@Entity
당연히 엔티티 클래스 먼저 하나 만들어야 한다.
package com.example.myapp;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String content;
}
@RestController
그 다음 컨트롤러를 이용해 메세지를 저장하는 기능을 추가 해야 한다. 이렇게 작성 해주면 /save-messeage 를 불러 올 때마다 데이터베이스에 저장이 될 것이다.
package com.example.myapp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private MessageRepository messageRepository;
@Value("${myapp.message}")
private String message;
@GetMapping("/hello")
public String sayHello() {
return message;
}
@PostMapping("/save-message")
public String saveMessageToDatabase(@RequestBody String newMessage) {
Message messageEntity = new Message();
messageEntity.setContent(newMessage);
messageRepository.save(messageEntity);
return "Message saved to the database!";
}
}
'spring 스프링' 카테고리의 다른 글
[Spring Boot] 일정 주기로 실행하는 @Scheduled 사용해보기 (0) | 2023.08.15 |
---|---|
Spring Boot 초기 데이터 설정 방법 정리(data.sql, schema.sql) (0) | 2023.08.09 |
[JAVA] Gson 라이브러리 JsonParser() is deprecated (0) | 2023.08.01 |
[Spring boot] Rest Api + Vue.js를 이용한 SMTP 초 간단 이메일 인증 구현 (0) | 2023.06.23 |
Spring 과 Vue 의 작동 (0) | 2023.06.08 |