[Spring / error] NullPointerException 에러 수정
·
Framework & Library/Spring
로스트아크 API를 이용한 기능 구현중 똑같은 기능을 하는 서비스 메서드를 구축했는데 유독 한쪽에서만 에러가 발생 @Controller @RequiredArgsConstructor public class SuppressionController { private static SuppressionService suppressionService; private static MarketApiService marketApiService; @GetMapping("/api/suppression") public String CallSuppression(Model model) { JSONArray result = marketApiService.CallMarketCategories(50000); //model.addAtt..
[LOATODO] 로스트아크 오픈 API - 오레하 제작(낚시) 효율 계산
·
Project/LOATODO
1. 서론API 데이터 활용하는거 연습해볼겸평소에 낚시 재료로 오레하를 만들었을 때"어떤 오레하를 만들어서 파는 것이 이득인가?""낚시 재료로 파는 것과 만들어서 파는 것중에 어떤게 더 골드를 더벌까?"두 가지 생각을 바탕으로 엑셀에 적당히 만들어서 계산을 하였다.  이 표에서 필요한 데이터는 "낚시 재료 가격"과 "오레하 가격"이다이 두 가지 데이터를 페이지 접속시 API로 가져와서 계산 후 보여줄 것이다. 2. 개발2 - 1. 낚시 재료 가격 호출public JSONObject CallMarketCategories(int CategoryCode) { try { URL url = new URL("https://developer-lostark.game.onstove.com/markets/it..
[Java / Spring] MAC OS 스프링 빌드 후 배포
·
Framework & Library/Spring
0. AWS EC2, RDS 활용 Sping boot 빌드, 배포 스프링 인스타그램 클론코딩 프로젝트 진행 중 무중단 배포 테스트를 위해 AWS EC2와 RDS를 사용하였다 EC2 인스턴스로 리눅스 서버를 구축하고 RDS로 MariaDB를 구축하고 탄련적 IP로 IPv4 주소를 할당 한 후 한국도메인 사이트를 이용하여 도메인을 설정하였다 이후 리눅스 서버를 깃허브와도 연동하여 CI/CD(Continuous Integratio/Continuous Deployment)로 자동화를 하려고했으나 AWS 프리티어의 적은 RAM 용량으로 빌드 중 계속해서 서버가 멈추는 현상이 발생해서 노트북 개인서버를 포트포워딩으로 접속하는 방식으로 바꾸었다. (노트북을 안끄면 무중단배포니깐...) 1. MAC OS에서 스프링 빌..
[Spring] 인스타그램 클론코딩 004. 회원가입 - DB에 회원정보 저장
·
Project/인스타그램 클론코딩(중단)
회원가입으로 받은 데이터(SignupDto)를 User Entity로 변환하여 DB에 저장한다 1. Builder 패턴 사용 Dto 데이터를 오브젝트에 담기 쉬운 방법으로 Builder 패턴을 사용하는 방법이다. lombok이 지원해주는 어노테이션 @Builder를 User.java에 추가한다. SignuDto.java에 builder패턴 메서드를 생성한다. package com.GStagram.domain.auth; import com.GStagram.model.User; import lombok.Data; @Data // Getter, Setter public class SignupDto { private String username; private String password; private Str..
[Spring] 인스타그램 클론코딩 003. 회원가입 - SignupDto 생성
·
Project/인스타그램 클론코딩(중단)
회원가입을 위한 Dto와 DB연결을 위한 Model 생성 1. SignupDto 생성 시큐리티 세팅을 끝나고 회원가입 기능 구현을 위해 첫 번째로 할 작업은 User Model을 만드는 것이다. 클라이언트가 회원가입에서 POST 요청하여 DB에 INSERT되게 될 곳이 User이기 때문이다. 따라서, 회원가입 페이지에서 클라이언트가 input 태그에 넣게 될 데이터의 형태에 맞는 DTO(Data Transfer Object)를 만들어 주어야 한다. SignupDto.java package com.GStagram.domain.auth; import lombok.Data; @Data // Getter, Setter public class SignupDto { private String username; pr..
[Spring] 인스타그램 클론코딩 002. 회원가입 - CSRF Token 해제
·
Project/인스타그램 클론코딩(중단)
스프링 부트 환경에서 Spring Security의 CSRF Token 해제 1. 회원가입 페이지 구현 로그인 페이지에서 가입하기 버튼 클릭 시 회원가입 페이지로 이동한다. AuthController.java package com.GStagram.domain.auth; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class AuthController { @GetMapping("/auth/login") public String loginPage() { return "auth/login"; } @GetMapping("/auth..
[Spring] 인스타그램 클론코딩 001. 회원가입 - SecurityConfig 생성
·
Project/인스타그램 클론코딩(중단)
스프링 부트 환경에서 Spring Security를 이용한 권한, redirect, 로그인 페이지 구현 1. 스프링 시큐리티 설정 추가하기 Maven org.springframework.boot spring-boot-starter-security Gradle compile("org.springframework.boot:spring-boot-starter-security") 2. 스프링 시큐리티 기본 적용 위와 같이 디펜던시 추가 후 아무 페이지도 만들지 않고 서버를 실행하여 http://localhost:8080 으로 진입하면 페이지를 찾을 수 없다면서 404 상태코드가 출력되어야 한다. 하지만, 실제로 접속해보면 로그인 페이지가 출력된다. localhost를 요청했지만 302번의 상태코드가 나오면서 r..
[Spring / error] mustache 에러 com.samskivert.mustache.MustacheException$Context: No method or field(해결)
·
Framework & Library/Spring
DB에서 받아온 데이터의 값이 null일 때와 아닐 때 처리하기 위한 작업 근데 null일 때는 정상작동 되는데 empty거나 null이면 정상작동되지 않음 userEntity로 가져온 데이터 UserModel(id=3, username=asd, password=$2a$10$wQ5wsG3LyI.54IQ07cmBk.aGKc0TERCkaqFdyrUYWjXU6eltIXp0y, email=qwe2487@ajou.ac.kr, name=이민혁, website=asdasdwdawd, bio=test, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, regDate=2022-10-14T16:01:22.496045) 에러 메세지 수정 완료 조건을 {{#use..
[Java / Spring] 싱글톤 컨테이너
·
Framework & Library/Spring
- 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 - 싱글톤 패턴 - 싱글톤 컨테이너 - 싱글톤 방식의 주의점 웹 애플리케이션과 싱글톤 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생 대부분 스프링 애플리케이션 -> 웹 애플리케이션 - > 보통 여러 고객이 동시에 요청 package hello.core.siglectone; import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework..