공부/Spring Boot9 SpringBoot에 Flyway적용해서 DB 형상 관리 하기 + JPA 옵션, flyway 옵션 정리 Flyway란 ?DB 형상관리 툴이다. == DB 변경 관리 툴 * 형상관리 : sw의 변경사항을 체계적으로 추적하고 통제하는 것. Git은 소스코드 형상관리 툴이고 Flyway는 DB 형상관리 툴이다. 어떤 상황에서 ?개발 도중 스키마가 변경 될 때1. spring:jpa:hibernate:ddl-auto: create or update를 주로 사용한다. 문제점 -> create는 이전 데이터를 다 날려버리므로 배포 환경에서 사용할 수 없음이 명확하고 update는 테이블을 수정하지 않고 부족한 부분을 수정한다. 2. 각 배포 환경을 돌아다니면서 직접 schema 변경 문제점 -> 확인하는 것도 일이고 실수가 나기 쉽다. 이런 DB 가 변경될 상황들에서 변경 관리 이력을 추적하고 관리하기 위해 Flyw.. 2024. 8. 26. Spring Boot) 백 & 프론트 카카오 로그인 API 구현하기 카카오 공식문서에 있는 로그인 과정이다.처음부터 보고 로직 이해를 하면 구현이 한결 쉬워진다. 공식문서의 위력을 다시 한 번 느꼈다. 간단하게 정리해보면 다음과 같다.1. 카카오 로그인 완료 후 Redirect URI로 인가 코드 발급됨.2. 인가 코드를 통해 카카오 서버로 토큰 요청.3. 토큰을 통해 카카오 로그인 한 사용자 정보를 받아올 수 있음.4. 해당 사용자 정보를 이용해 회원가입 or 로그인 처리. 로직을 토대로 우리 프로젝트에서 적용한 플로우는 다음과 같다.1. 프론트-> 카카오 kakao.Auth.Authorize()이용해 카카오 로그인 화면 요청 2. 카카오-> 백 로그인 완료되면 code와 함께 자동으로 백 리다이렉트 url로 넘어감 (~~/oauth/kakao/callback?cod.. 2024. 8. 24. Spring Security + JWT 인증 인가 구현하기(로그인 API, 인증이 필요한 API) 1. 로그인 구현비밀번호가 일치하면 토큰을 생성해서 내려준다. 구현해야할 것- 로그인 컨트롤러- 로그인 서비스- JwtUtils 클래스에 token 생성 로직 컨트롤러@PostMapping("/login") public ResponseEntity signIn( @RequestBody @Valid SignIn.Request request) { return ResponseEntity.ok(memberService.signIn(request)); } 서비스public SignIn.Response signIn(SignIn.Request request) { Member member = getMemberByEmail(request.getEmail()); .. 2024. 8. 16. Spring Boot 3.x 버전에서 Spring Security 적용기 * 스프링 시큐리티 버전확인하기 Gradle - Dependencies - 'security' 검색하여 확인할 수 있다. 6.3.1 버전으로 확인된다. 스프링 시큐리티 5.7버전 이상부터는 더이상 WebSecurityConfigurerAdapter가 사용되지 않는다고 한다.이전 프로젝트는 5.7.11 버전이었고 WebSecurityConfigurerAdapter를 상속받아 SecurityConfig를 구성했었었는데 더이상 그대로 제작할 수 없게 되었다.(5.7.11버전에서 저렇게 줄이 그어져있긴 하지만 사용할 수는 있었다.)GiftFunding) Spring Security를 이용한 로그인 구현 (tistory.com) GiftFunding) Spring Security를 이용한 로그인 구현Spring .. 2024. 8. 13. Spring Boot) 회원가입 시 PasswordEncoder 이용해 비밀번호 암호화 초기에 백엔드 개발을 배울 때 했던 건데 다시 하려니까 기억이 잘 안나서 다시 정리하려고 한다. 1. 의존성 주입implementation 'org.springframework.boot:spring-boot-starter-security' 2. PasswordEncoder @Bean으로 등록 * Bean으로 등록하지 않으면 아래와 같은 오류가 난다.Description: Parameter 1 of constructor in com.sj.Petory.domain.member.service.MemberService required a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' that could not be foun.. 2024. 8. 12. SpringBoot 3.x 버전에서 RestDocs + SwaggerUI 사용하기 이전 개인 프로젝트에서 완벽하게 RestDotcs와 SwaggerUI를 활용한 API 문서를 제작했다.GiftFunding) RestDocs + Swagger 적용하기(feat. Controller 테스트 코드 작성) (tistory.com) GiftFunding) RestDocs + Swagger 적용하기(feat. Controller 테스트 코드 작성)RestDocs란 ? Spring Rest Docs는 Spring MVC를 사용하는 REST API를 문서화하는데 도움을 줌. Spring Rest Docs는 Spring MVC의 테스트를 실행하면서 생성된 응답을 기반으로 문서를 생성. API Spec과 문서화를 위한 테soni-developer.tistory.com 이걸 참고해서 이번 프로젝트에서도 .. 2024. 8. 1. OpenAPI 데이터 받아오기 weather 프로젝트에서 openweathermap API에 날씨 데이터를 받아오는 기능을 구현하였다. 1. API를 호출할 수 있는 String 작성. String apiUrl = "https://api.openweathermap.org/data/2.5/weather?q=seoul&appid=" + apiKey; * apiKey는 보안상에 중요한 정보이므로 직접 기재하는 것이 아닌 application.properties에 'openweathermap.key=실제키 값'으로 작성해놓고 이 메소드 만든 클래스의 상단에 아래와 같이 작성. @Value("${openweathermap.key}") private String apiKey; -> 장점 : 환경에 따라 유연한 값 설정 가능. 2. URL 객체 .. 2023. 9. 29. JPA를 이용해서 MySQL에 데이터 저장하기 JPA (Java Persistent API) ORM의 한 종류 자바에서 ORM을 많이 쓰니까 아예 자바전용 ORM을 JPA로 만듦. → 자바에서 ORM 기능을 쓰기 위한 인터페이슬 모아둔 것. 자바의 객체와 DB 테이블만 연결해주면 쿼리 자동 생성. JPA로 데이터 저장하기 1. build.gradle dependencies에 JPA라이브러리 추가 (사용할 db라이브러리도) implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 2. application.properties에 DB 접속정보 설정 spring.jpa.show-sql=true //내부적으로 작성된 쿼리를 콘솔에 출력할지 여부 spring.jpa.database=mysq.. 2023. 9. 27. JDBC를 이용해서 MySQL 데이터 저장하기 JDBC (Java Database Connectivity) SQL Mapper의 한 종류 자바와 DB를 연결해주는 애. 그 이상/이하도 아님 JDBC로 데이터 저장하기 url = jdbc:DB_VENDER://IP_ADDR:IP_PORT/INSTACNE 1. build.gradle 파일에 jdbc, mysql 관련 라이브러리 추가. implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.mysql:mysql-connector-j' //버전 바뀜에 유의 2. SpringBoot 실행시키면 APPLICATION FAILED TO START 뜰 거임. → DB 접속 정보가 없기 때문 3. application.pr.. 2023. 9. 27. 이전 1 다음 728x90