개념

요청은 컨트롤러에서 시작하고, 저장은 리포지토리에서 끝납니다.

애플리케이션

@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가 이 생성자를 대신 만든다. 실행될 때 생기는 코드는 위와 같다.