프로젝트를 진행하다 보면 ~/src/main/resources 폴더에 파일을 저장하고 가져와서 사용할 일이 있다. 이때 프로젝트를 빌드하게 되면 리소스 파일은 CLASS_PATH에 위치하게 된다. 따라서 로컬에서는 아래의 예시 코드로 실행해도 실행이 되지만. 실제로 빌드를 하고 배포를 했을 때는 에러가 발생한다. ... fun getSheetService(): Sheets { return Sheets.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), HttpCredentialsAdapter( ServiceAccountCredentials.fromStream(FileInputStream("src/m..
gradle 설정 예전과 달리 Springboot 2.3 버전 부터는 spring-boot-starter-validation 의존성을 명시해야 Valid를 사용 가능하다. build.gradle.kts 파일에 아래의 의존성 코드를 추가 implementation("org.springframework.boot:spring-boot-starter-validation") 관련 어노테이션 정리 어노테이션 예시 설명 @DecimalMax @DecimalMax(value = "5.5") 소수 최댓값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @DecimalMin @DecimalMin(value = "5.5") 소수 최솟값 지정 같은 값까지 허용(예시에선 5.5까지 허용) null 허용 @Max..
2021.12.22 - [Back-end/Spring & Spring Boot] - [Spring boot] 문자 SMS 인증 구현하기(1) 이전 포스팅에 SMS 문자로 인증 번호를 발송하는 부분을 구현해보았는데 이번 포스팅엔 발송했던 인증 번호를 저장해 두었다가 인증 번호 확인을 하는 부분을 구현해보려고 한다. 휴대폰이나 이메일 인증을 통해 회원가입을 진행할때 고민해야할 가장 큰 부분은 인증번호 관리라고 생각한다. 기본적으로 생각해볼 수 있는 방법은 회원 테이블에서 관리하는 것이었지만 이 방식의 경우 한 번 인증 후 다시 인증을 할 일도 없고 인증번호의 경우 짧은 시간 내에 인증이 이뤄져야 했기에 RDB에서 관리하는 것은 비효율적이라고 생각하여 배제했다. 그에 비해 Redis는 기본적으로 Map형태의 ..
WIL(Weekly I Learned) 이번 주는 처음으로 Front분들과 협업을 하여 프로젝트를 해보았다. 또 팀장을 맡게 되어.. 당황스러웠지만 우리 팀은 의사소통이 정말 잘되어 즐겁게 프로젝트를 진행하였다. Git을 어떻게 관리해야할지 어떤 부분을 더 디테일하게 정하고 시작하면 좋을지 등을 많이 깨달았다. 다음 주에는 Git에 이슈 정리를 통해 트러블 슈팅을 잊어버리지 않게 관리하고 싶고 또 팀 노션 운영을 통해 프론트분들의 진행 상황을 좀 더 자세하게 체크할 필요성을 느꼈다. 백의 구현이 더 빨리 끝나서 Swagger나 JMeter를 통한 테스트 등 다른 것들을 시도해볼 수 있어 좋았지만 프론트의 진행 상황을 몰라서 조금의 답답함은 있었다. 이러한 부분을 팀 노션 운영을 통해 해결해보고 싶다. 다..
처음으로 back과 front를 다른 서버에서 구현을 하는 작업을 하여 테스트를 해보려고 하니, CORS에러가 떴다.. CORS가 뭔지, 어떻게 해결해줄지 적어보기.. CORS란? Cross-Origing Resource Sharing의 줄임말로, 교차 출처 리소스 공유라는 뜻이다. -> 다른 출처의 리소스를 공유 여기서 말하는 출처는 protocol, host, port를 합친 것을 의미한다. 즉... 이렇게 브라우저에 접속한 위치가 출처라고 보면 된다. 같은 출처? 다른 출처? 현재의 웹페이지 주소가 https://diddl.tistory.com/manage일 때, 같은 출처는 무엇이고 어떤 것이 다른 출처인지 보자 URL 같은 출처 여부 이유 https://diddl.tistory.com/manag..
JPA에서 중요한 것 객체 관계 매핑(ORM)에서 가장 어려운 부분이자 가장 중요한 것을 뽑자면, "객체와 관계형 데이터베이스 테이블이 어떻게 매핑할지" 이다. JPA 목적이 객체 지향 프로그래밍과 데이터베이스 사이의 패러다임 불일치를 해결이라는 것과 직접적인 연관이 있기 때문이다. 연관 관계를 매핑할 때 다음 3가지를 잘 고려해야 한다. 방향 단방향 : 회원, 팀 관계에서 회원 -> 팀 또는 팀 -> 회원 한 쪽으로만 참조한다면 단방향 양방향 : 회원 -> 팀, 팀 -> 회원 양쪽에서 서로를 참조하고 있을 때 양방향 ( 이렇게 서로를 참조하는 양방향 관계는 객체에서만 존재하고, 테이블은 회원 팀 으로 항상 양방향이다! 객체에서의 양방향은 즉... 단방향 2개 관계인 것이나 마찬가지) DB 테이블은 외래..
Spring Security란? Spring 기반의 어플리케이션의 인증과 권한, 인가 등 보안을 담당하는 스프링 하위에 있는 프레임워크이다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주어 개발자는 일일이 보안 관련 로직을 작성하지 않아도 된다는 장점을 제공한다. Spring security는 Filter 기반으로 동작하기 때문에 Spring MVC 와 분리되어 관리 및 동작한다. 인증(Authorizatoin)과 인가(Authentication) 인증 (Authentication): 사용자 신원을 확인하는 행위 -> 회원가입하고 로그인 하는 것 인가 (Authentication): 사용자 권한을 확인하는 행위 -> 웹에서는 주로 역할에 따른 권한 관리 예를들어 카페에 가..