728x90

springboot 14

(FCM)서버-IOS 연동 시 발생한 예외 사항 대처 방법

수신자로 FCM 토큰 값을 입력해야 하는데, 연동이 되어 있지 않는 토큰을 입력한 경우 발생한다. 안드로이드의 경우, onNewToken() 함수 내에서 발생한 토큰 값을 입력하면 발송이 정상적으로 된다. iOS의 경우도 onNewToken()을 구현해서 발생한 토큰값을 서버로 넘겨주면 된다고 한다(참고 : https://stackoverflow.com/questions/51296171/fcm-onnewtoken-vs-firebaseinstanceid) 큰 형식이 유효하지 않을 때 발생하는 예외 Device 토큰이랑 FCM 토큰 중 onTokenRefresh() 함수를 통해 갱신된 FCM 토큰 을 수신인에 등록하여 발송하면 정상적으로 발송된다. 위 두가지 예외 상황은 공통적으로 수신자에 잘못된 FCM 토..

FCM 2023.08.04

(코틀린 버전) 안드로이드 푸시알림 spring boot 서버 개발

파이어베이스는 2011년 파이어베이스사가 개발하고 2014년 구글에 인수된 모바일 및 웹 애플리케이션 개발 플랫폼 구글 드라이브와 애널리틱스를 적용해서 어떤 기기에서나 개발할 수 있는 환경을 만들어 주고, 사용자들의 이용횟수, 광고 효과, 문제 발생 빈도 등을 알려줘서 개발자들이 쉽게 활용할 수 있도록 지원 파이어 베이스의 인증 기능을 이용한 SSO(통합 인증)을 지원하는 서비스를 통해 사용자는 로그인을 활동을 쉽게 할 수 있음 파이어베이스는 NoSql 클라우드 데이터베이스에 JSON 형태로 데이터를 저장하고 클라이언트에 실시간으로 동기화 파이어베이스는 HTML , CSS, 자바스크립트 등과 같은 정적 콘텐츠를 빠르고 안전하게 호스팅해줍니다. 또한 SSL을 제공하기 때문에 안전하게 컨텐츠를 전송 컨트롤러..

4) Querydsl 설정

Querydsl 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. JPA 설정에 이어서 편리한 기능을 제공하는 Querydsl 설정을 추가한다. 우선, build.gradle 에 라이브러리를 추가 후, gradle을 새로고침을 한다. //Querydsl 버전 관련 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { ... //Querydsl 관련 추가 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' ... } dependencies { ... //Querydsl 관련 실제 lib 추가 implementation "com..

2) MyBatis 3.0 다중 스키마 설정

MyBatis 3.0 다중 스키마 설정 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 우리가 사용하는 Spring와 하이버네이트에서 제공해주는 @Transactional는 알아서 트랜잭션을 관리해주는 마법의 키워드가 아니다. 추상화해서 사용할 뿐이지 실제는 위와같이 JDBC 트랜잭션을 사용하여 구현한다. DAO에서 Database에 접근하기 위해서는 Spring-jdbc가 필요하고, 이는 DataSource 정보로부터 구할 수 있다. 또한, 스프링은 트랜잭션 처리를 TranscationManager 객체를 통해 처리한다. 구현체는 갈아끼울 수 있게 인터페이스인 PlatformTranscationManager가 주입되어 사용된다..

1) 스프링 부트 프로젝트 생성

스프링 부트 프로젝트 생성 아래 내용은 https://github.com/beaver84/setting-test 에서 실제 소스를 확인할 수 있습니다. 프로젝트 개발을 위해 intelliJ에서 새 프로젝트 만들기를 클릭합니다. 다음 버튼을 클릭 (comment - 현재 기준 Spring Boot 3.x.x 버전은 아직 안정화되지 못했다고 판단하여 2점대 버전중 가장 최신 버전으로 프로젝트를 진행하도록 하였습니다) 이번에는 2.7.9 버전을 선택하고 생성 버튼을 클릭합니다. 루트 디렉터리에서 build.gradle을 더블 클릭합니다. build.gradle 파일에 아래와 같이 추가합니다. plugins { id 'java' id 'org.springframework.boot' version '2.7.4' ..

@Controller와 @RestController의 차이점

@Controller와 @RestController의 차이 1. @Controller 이해 Controller로 View 반환하기 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환합니다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. HandlerMapping을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 View..

Spring 2023.03.05

CustomAuthenticationSuccessHandler와 CustomAuthenticationFailureHandler

: Security에서 지원하는 인증성공, 인증실패 핸들러를 상속한 클래스를 직접 커스텀하여 사용해보자. 1. 인증성공 핸들러 커스텀 2. 인증실패 핸들러 커스텀 3. config 설정 4. 익명클래스로 처리하는 방법 1. 인증성공 핸들러 커스텀 1. SimpleUrlAuthenticationSuccessHandler를 상속한 커스텀 클래스 CustomAuthenticationSuccessHandler를 만듭니다. 2. requestCache와 RedirectStragey를 사용하여 사용자가 인증 요청 성공시 이전에 접근하려 했던 자원(리소스)의 경로로 바로 보내기 위해서 설정해줍니다. 이전의 접근하려 했던 자원(리소스)가 없는 경우 null을 반환하도록 하여 setDefaultTargetUrl에 설정해..

Spring/Security 2023.02.18

SpringBoot + Mybatis 연동하기

SpringBoot + Mybatis 연동 1. MyBatis 라이브러리 Gradle 의존성 설정MyBatis 라이브러리 Gradle 의존성 설정을 위해 build.gradle 파일을 열어 줍니다. 그럼 dependencies라는 부분에 아래와 같이 추가합니다. // MyBatis 라이브러리 의존성 추가implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'runtimeOnly 'mysql:mysql-connector-java:8.0.25'  의존성 설정을 추가했다면 Gradle 싱크를 맞혀 줍니다. 아래 버튼을 통해 Gradle 싱크를 할 수 있습니다. 여기까지 완료 후 서버를 시작하면 아마 서버에서 오류가 발생합니다. 경고N..

Spring 2023.01.12

RestTemplate과 WebClient(feat. 서버 간 데이터 주고 받기)

RestTemplate과 WebClient 스프링 어플리케이션에서 HTTP 요청할 때 사용하는 방법으로 RestTemplate과 WebClient가 있다. 스프링 5.0 이전까지는 클라이언트에서 HTTP 접근을 위해 사용한 것은 RestTemplate 이었다. 스프링 5.0 에서 WebClient가 나왔고 현재는 WebClient를 사용하기를 권고하고 있다. 이번 팀 프로젝트를 진행하면서 RestTemplate을 도입하였었다. 하지만 RestTemplate이 deprecated 될 가능성이 있다는 얘기를 들었고 새로 시작하는 프로젝트에서는 WebClient를 쓰는 것이 좋겠다는 의견이 있어 WebClient를 적용해보게 되었다. 그럼 RestTemplate과 WebClient는 어떤 특징이 있으며 왜 W..

Spring 2022.12.02

(Springboot 관련) mongoDB 초기 설정

몽고 DB 초기 설정 몽고 DB가 설치되면 https://start.spring.io/ 로 이동하여 다음 세 가지를 dependencies를 모두 추가하자. Spring Data JPA도 빼먹지 말고 추가하자. 이제 project를 open 하여 다음 코드들을 추가해보자. (공식 문서 참조했습니다.) public class Recipe { @Id public String id; public String name; public String type; public Recipe() {} public Recipe(String name, String type) { this.name = name; this.type = type; } } public interface RecipeRepository extends Mo..

Spring 2022.10.01
728x90