공부/Spring Boot10 SpringBoot 프로젝트에서 SSE를 활용한 알림 기능 개발 도입 배경Petory 프로젝트에서 사용자에게 알림을 보내야 할 경우가 생겼다.어떤 조건을 만족시켰을 때 스켸줄러로 자주 체크하여 알림 정보를 보내주는 방법이 현재 나의 지식으로 구현할 수 있는 당장 떠오른 방법이다.다만 이렇게 하자니 실시간으로 알림을 보내려는 취지에 부합하지 않다고 느껴졌다. 그래서 실시간으로 알림을 보낼 수 있는 다른 방법을 찾아보았다 ! 스프링부트에서 구현할 수 있는 알림 방식1. PolllingHTTP를 이용한 서버-클라이언트 간 데이터 전달 동작과정 일정 주기로 클라이언트가 서버에 데이터를 요청하고 서버가 현재 상태를 응답.(데이터가 없어도 응답함) 장점 구현이 간단하다. 단점 업데이트 주기가 길면 실시간 성이라고 보기 어렵고 짧으면 불필요한 요청을 보내기 때문에 서버에 .. 2025. 4. 16. 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. 이전 1 2 다음 728x90