동작 흐름 요약
- 사용자가 /login/kakao 경로로 GET 요청
- 서버에서 카카오 OAuth2.0 로그인 URL을 동적으로 생성
- RedirectView를 통해 사용자를 카카오 로그인 페이지로 리다이렉트

@RestController
- REST API의 컨트롤러임을 나타냄
- 이 클래스 안의 모든 메서드는 HTTP 요청을 처리하고 JSON 또는 HTTP 응답을 반환함
@RequestMapping("/login")
- 컨트롤러의 기본 경로를 /login 으로 설정
private static final Logger logger = LoggerFactory.getLogger(KakaoController.class);
- LoggerFactory.getLogger()**를 사용해 클래스 이름을 기반으로 로그 객체를 생성
- private static final**로 선언하여 이 값이 변경되지 않도록 함
@Value 애너테이션

@Value
- application.properties 파일에 있는 값을 가져와서 필드에 주입
${kakao.client.id}
- application.properties 파일에서 kakao.client.id 항목의 값을 clientId 필드에 주입
private String
- 두 필드는 접근 제어자가 private으로 설정되어 외부에서 접근할 수 없고, 필드 타입은 String
loginPage 메서드 (Spring REST API메서드)

@GetMapping("/kakao")
- HTTP GET 요청을 처리하는 메서드
- /login/kakao 경로로 GET 요청을 보내면 이 메서드가 호출
- 클라이언트는 로그인 요청을 보내기 위해 이 경로를 호출
RedirectView
- Spring에서 제공하는 클래스로, 사용자를 다른 URL로 이동시키는 역할
URL 파라미터
- response_type=code: 카카오 서버로부터 인증 코드를 요청하는 파라미터
- client_id: 카카오 API에서 발급된 클라이언트 ID를 사용하여 요청함
- redirect_uri: 로그인 완료 후 카카오 서버가 리다이렉트할 URL입니다. 이 값은 application.properties에서 설정된 값이 주입됨
logger.info("카카오 로그인 URL: {}", kakaoLoginUrl);
return new RedirectView(kakaoLoginUrl);
- RedirectView 객체를 사용하여 카카오 로그인 URL로 클라이언트를 리다이렉트