요청은 컨트롤러에서 시작하고, 저장은 리포지토리에서 끝납니다.
@SpringBootApplication이 붙은 클래스가 시작점이다. 이 한 곳을 실행하면 같은 프로그램 안의 컨트롤러와 서비스를 Spring이 찾아서 연결한다.
@SpringBootApplication
public class VillaApplication {
public static void main(String[] args) {
SpringApplication.run(VillaApplication.class, args);
}
}
| 자리 | 하는 일 |
|---|---|
| 컨트롤러 | 주소와 HTTP 메서드를 Java 메서드에 연결한다. 화면 또는 JSON을 고른다. |
| 서비스 | 규칙이 있는 작업을 모은다. 예를 들면 공개 매물만 목록에 넣는다. |
| 리포지토리 | 데이터베이스를 읽고 쓴다. JPA가 SQL을 만들어 보낸다. |
| 템플릿 | src/main/resources/templates의 HTML. 컨트롤러가 고른 이름과 파일이 대응한다. |
설정은 src/main/resources/application.yml에 둔다. 데이터베이스 주소, 포트, 외부 API 키가 여기 있다. MariaDB에 붙이는 항목은 MariaDB · 접속에 있다. 비밀번호가 있으면 Git에 올리지 않는다. 기준은 GitHub · 파일과 실수와 같다.
컨트롤러가 서비스를 new로 직접 만들지 않는다. 생성자 인자로 받으면 Spring이 이미 만들어 둔 객체를 넣는다.
@Controller
public class HomeController {
private final VillaService villaService;
public HomeController(VillaService villaService) {
this.villaService = villaService;
}
}
프로젝트에 Lombok이 있으면 @RequiredArgsConstructor가 이 생성자를 대신 만든다. 실행될 때 생기는 코드는 위와 같다.