2025-05-02Spring Boot는 복잡한 설정 없이 빠르게 웹 애플리케이션을 개발할 수 있도록 도와주는 스프링 프레임워크의 하위 프로젝트다.내장 톰캣, 자동 설정(Auto Configuration), 스타터 의존성, 운영환경 진단 툴(Actuator) 등을 제공
2025-05-02동기 방식의 form 데이터 파라미터 전달required, defaultValue 옵션으로 유연한 처리 가능비동기 방식(JSON 등)의 본문 데이터 처리에 사용POST 요청에서 JSON 혹은 문자열 데이터를 직접 받음폼이나 쿼리 파라미터를 객체에 바인
2025-05-02Spring Boot는 @SpringBootApplication 안에 @ComponentScan이 포함되어 있어 별도 스캔 설정 없이 자동 탐색된다.JSP를 사용할 경우 jakarta.servlet 기반 라이브러리 설정 필수예외 처리는 @Excepti
2025년 5월 7일JPA(Java Persistence API)는 자바 ORM(Object-Relational Mapping) 기술 표준이다.자바 객체와 관계형 데이터베이스 테이블 간의 매핑을 처리한다.SQL을 직접 작성하지 않고도 데이터 접근/수정이 가능하며, 유지
2025년 5월 7일Spring Data JPA에서는 메서드 이름만으로도 SQL 없이 자동 쿼리를 생성할 수 있다.findBy, countBy, deleteBy 등의 prefix와 속성명을 조합하여 다양한 검색·조작 기능을 만들 수 있다.JPA는 메서드 이름만으로 쿼리
2025년 5월 7일JPA에서 객체 지향적으로 데이터를 조회하기 위한 쿼리 언어SQL과 유사하지만, 테이블이 아닌 엔티티 객체(Entity) 를 대상으로 함ex) SELECT u FROM User u ← User는 실제 테이블이 아니라 엔티티 클래스 이름DB에 종속되지
2025년 5월 7일객체 지향 세계: 객체 참조 (예: Member → Team)관계형 DB 세계: 외래 키 사용 (예: member.team_id → team.id)JPA는 객체의 참조와 외래 키를 연결해주는 ORM 도구단방향: 한 쪽만 참조 → 설정 간단하지만, 조
2025-05-08✅ 설명:@ManyToOne의 기본 fetch 전략은 EAGER이지만, 실무에서는 대부분 LAZY로 명시적으로 변경하여 사용LAZY는 해당 필드에 접근할 때까지 연관된 데이터를 로딩하지 않음외래 키 제약 조건도 명시적으로 설정하여 참조 무결성 유지 (
2025-05-08MyBatis와 JPA는 내부 트랜잭션 매커니즘이 다르기 때문에 트랜잭션 매니저가 충돌할 수 있다.Spring에서는 @Transactional에서 사용할 트랜잭션 매니저를 명시적으로 지정함으로써 혼선을 방지할 수 있다.MyBatis와 JPA 각각 다른
@RestController는 @Controller와 @ResponseBody를 합친 어노테이션으로, HTML 뷰가 아닌 데이터(JSON/XML 등)를 직접 반환하는 API용 컨트롤러이다.서버는 HTML 뷰를 렌더링하지 않고, JSON/XML 데이터를 직접 반환한다.R
2025-05-09Thymeleaf는 HTML/XML 문법을 기반으로 하는 서버 사이드 템플릿 엔진입니다. Spring Boot와의 연동성이 뛰어나 View Layer 구성에 많이 사용됩니다.HTML 파일 그대로 브라우저에서 확인 가능 (HTML 친화적 문법)Sprin
RESTful API 개념 정리공공데이터포털 API 신청 및 인증키 사용기상청 초단기실황 API 호출JSON 응답 구조 확인 → Java DTO 클래스 자동 생성데이터 출력: Thymeleaf 뷰 연동REST: 자원을 URI로 표현하고, HTTP 메서드로 조작하는 아키
실시간 버스 도착정보 OpenAPI(XML)를 Spring Boot에서 호출JAXB로 XML을 Java 객체로 자동 변환RestTemplate을 이용한 외부 API 통신JSON 출력 및 콘솔 출력 방식 실습향후 CSV 연계 및 DB 저장 확장 가능서비스: 대구광역시 실
사이트: https://home.openweathermap.org로그인 후 API keys 메뉴에서 키 생성 가능API Endpoint:주요 파라미터:※ units=metric 설정 덕분에 온도는 섭씨(°C)로 변환되어 출력됨※ lang=kr 설정으로 desc
웹 브라우저에서 Daum 기반 인터랙티브 지도를 띄우고,사용자가 클릭한 위치의 실시간 날씨 정보를 OpenWeatherMap API로 받아,지도 위에 마커와 팝업 형태로 시각화하는 프로젝트를 구현함.좌표계 정의부터 API 호출, 응답 파싱까지 프론트와 백엔드가 협력하는
Leaflet 라이브러리를 사용해 웹 브라우저에 지도를 띄우고GeoJSON 파일을 시각화하여 대구광역시 행정구역(구/동)을 구분사용자 클릭 이벤트로 마커 생성, 날씨 API 연동Mapshaper.org를 사용해 행정구역 데이터 병합(dissolve)까지 수행기본 웹 프
공식 문서: https://apis.map.kakao.com/web/Kakao Maps JS SDK를 사용할 수 있는 중심 페이지애플리케이션 이름 입력 후 사진(아이콘) 등록 필수이미지 없이 등록하면 오류 발생플랫폼 > Web에 http://local
2025-05-13JavaScript SDK를 활용하면 프론트 단에서 로그인 처리가 가능하지만, client_id 노출 및 토큰 탈취 위험이 있기 때문에 Spring Boot 같은 백엔드 서버에서 처리하는 REST 방식이 권장됨. image.png카카오 로그인 활
2025-05-13인가 코드 수신 후 토큰 발급까지 완료되어야 카카오 로그인이 정상적으로 완료됨.토큰을 이용해 사용자 정보 요청 및 로그인 처리가 가능해짐.application/x-www-form-urlencoded 방식으로 POST 요청 수행.JSON을 자바로 변환하
2025-05-13액세스 토큰을 이용해 카카오 사용자 정보를 요청함사용자 정보는 id, nickname, email, profile_image 등응답 결과는 DTO로 매핑하여 Thymeleaf 등 템플릿에 전달 가능액세스 토큰을 통해 사용자 정보 요청을 수행응답은 DT
2025-05-13📌 주의:서버의 액세스 토큰은 만료되지만, 브라우저의 카카오 세션은 유지되어 자동 로그인 될 수 있음 클라이언트 세션이 필요하다면 request.getSession().invalidate(); 도 함께 수행 필요📌 연결 끊기는 토큰 만료 + 사
카카오 디벨로퍼스에서 애플리케이션을 설정하고OAuth2 인증을 통해 access token을 발급받은 후RestTemplate을 사용하여 자신에게 카카오톡 메시지를 보내는 API를 구현https://developers.kakao.com 접속로그인 후 내 애플리
이 문서 하나로 다음 작업을 직접 구현할 수 있습니다:카카오 개발자센터에서 앱 설정인가 코드 요청 및 access token 발급친구 목록 조회템플릿 기반 메시지를 친구에게 전송Spring Boot 프로젝트에 바로 적용https://developers.kaka
기능 목적: 사용자가 카카오 로그인을 할 때, 카카오톡 채널을 자동으로 추가할 수 있도록 유도함 전제 조건:비즈니스 채널 등록 및 연결앱의 플랫폼 등록 (http://localhost:8090 등)카카오 로그인 기능 활성화사용자 동의 항목 설정 (카카오톡
카카오 디벨로퍼스 로그인애플리케이션 생성앱 키 확인 및 발급JavaScript 키REST API 키Admin 키✅ Secret Key (dev) ← 결제 연동 시 사용플랫폼 등록도메인 등록: http://localhost:8090서버에서 카카오페이 결제 준비
네이버 OAuth2 로그인 연동 (Spring Boot 3.x)Access Token 발급 및 사용자 정보 요청RestTemplate을 통한 외부 API 호출사용자 정보 DTO 매핑 및 Thymeleaf 연동네이버 개발자센터 → 애플리케이션 등록필수 설정:사용 API:
OAuth 2.0 표준(RFC 7009)에 따라 access_token, refresh_token을 무효화(폐기)하는 방식네이버에서는 이 과정을 로그인 연동 해제라고 부르며, 사용자가 서비스 탈퇴 시 반드시 호출해야 함연동 해제가 성공하면:기존 access_token,
뉴스, 블로그, 백과사전, 책, 웹문서 등 다양한 분야의 검색 결과를 RESTful API로 제공XML 또는 JSON 형식으로 결과 반환하루 호출 한도: 25,000회비로그인 방식 오픈 API 클라이언트 ID와 시크릿을 HTTP 헤더에 포함하여 인증 (OAuth 인증
이 글에서는 Gmail API(OAuth) 방식이 아닌, SMTP 방식으로 Gmail을 연동하여 메일을 전송하는 방법을 설명합니다.경로: 구글 계정 > 보안 > 앱 비밀번호설정 방법:앱 이름 예: "Mail API 테스트"생성된 16자리 앱 비밀번호는 반드시 복사/저장
HTML 페이지에 FullCalendar를 띄우고Google Calendar에서 공개한 일정을 불러와 연동일정 클릭 시 사용자 정의 동작 실행FullCalendar 공식 문서 참고GCP(Google Cloud Platform)에서 새 프로젝트 생성Google Calen
FullCalendar에서 날짜를 클릭 → 모달창 입력 → 제출 → 📆 Google Calendar에 일정 자동 등록 프로젝트 생성API 및 서비스 → 라이브러리 → "Google Calendar API" 활성화사용자 인증 정보 > OAuth 2.0 클라이언트 I
2025-05-15채널 생성: 👉 https://admin.portone.io/integration-v2/manage/channel 테스트 SDK: 👉 https://sdk-playground.portone.io 연동 정보 확인 위치: 결
PortOne(아임포트)의 결제 취소 API는 이미 승인된 결제에 대해 환불을 요청하는 기능이다.imp_uid 또는 merchant_uid 중 하나를 기반으로 특정 결제를 식별해 취소할 수 있다.즉시 취소 가능: 카드결제, 휴대폰소액결제별도 계좌 입력 필요: 가상계좌,
2025-05-15브라우저 접속 시 (http://localhost:8090) Spring Security 기본 로그인 창 출력기본 사용자 ID: user비밀번호는 서버 실행 시 콘솔에서 출력됨Spring Boot 3.x + Spring Security 6.x
2025-05-19✅ 우리는 JWT 기반 인증 방식을 선택하고, Access Token을 쿠키에 저장하여 인증 흐름을 구현JSON Web Token: 사용자 정보를 JSON으로 인코딩한 후 서명하여 생성하는 토큰세 부분으로 구성됨: Header.Payload.Signa
2025-05-20Spring Security 공식 문서JWT 공식 문서너의 실제 실습 코드 기반SecurityConfig의 흐름을 완전히 이해하고 나니, 인증 필터의 동작 순서가 명확해짐단순 로그인 성공 처리가 아닌, JWT 발급 → 저장 → 전달 흐름을 커스텀 핸들
2025-05-20JWT 발급 (AccessToken + RefreshToken)JWT 검증 (유효성, 권한 포함 여부)인증 객체 생성 (UsernamePasswordAuthenticationToken)JWT 서명 키를 DB에서 불러와 유지SignatureSchedul
2025-05-20JWT는 서버가 토큰을 검증하기 위해 서명 키(Key)를 유지해야 한다.하지만 서버를 재시작할 때마다 키가 새로 생성되면, 기존에 발급한 토큰은 모두 검증 실패하게 된다.그래서 다음과 같은 구조로 설계했다:Signature 엔티티를 통해 키를 DB에
2025-05-20AccessToken은 보통 짧은 수명을 가지며, 클라이언트는 만료 시 RefreshToken을 통해 다시 인증해야 한다.그렇기 때문에 RefreshToken을 서버에 저장해두는 것이 중요하다.✅ 서버(DB)에 RefreshToken을 저장하면:🛡️
2025-05-20🔁 AT 재발급 흐름 도식:Postman에서 AT 없이 요청 → 401 응답 확인브라우저 개발자 도구 > Application > Cookie 탭에서 자동 갱신 여부 확인로그아웃 후 쿠키 및 DB 삭제 여부 콘솔 확인✅ JWT 기반 인증에서 토큰 재