본문 바로가기

코딩/Java, SpringBoot

(25)
[JAVA]예외는 언제 사용해야할까? 요즘 공모전을 나가면서 하루에 10시간은 개발하는 것 같다.. 방학이라 가능.. 점점 프로젝트 규모가 커지면서 예외의 필요성을 느꼇다. 근데 어떤 글에서는 Exception, try-catch는 최적화도 안되고 고비용이다. 그냥 null을 반환하거나 정의된 상수값을 반환하라는 글을 본적이 있다..(예외를 남발하지 말라는 글이었음.) 근데 분명 우린 사용자 정의 예외를 만드는 방법, throw new RuntimeException~을 배웠는데 안쓰는 건 이상하다. 그래서 과연 어떤 상황에서 예외를 쓰면 좋은지 알아보고자 한다. 아래의 블로그 참조하자..꼭꼭 보자!!.. 내가 여러개 보고 엄선한거니까.. 읽을 가치가 있다. https://tecoble.techcourse.co.kr/post/2020-08-1..
DTO <->Entity 변환. converter? vs toEntity(), toDTO()? # 이를 지원하는 많은 라이브러리들이 있지만 라이브러리의 기술을 제대로 알지 못하면 사용하지 않는다는 생각때문에 귀찮아도 코드로 구현하려 한다. 1. 처음에는 DTO - Entity 변환하는데 converter를 사용하려 했다. 근데 그것보다는 static으로 함수를 만드는게 더 깔끔하다는 생각을 했다. DTO-Entity변환 메소드를 컨트롤러의 파라미터에 자동 바인딩을 사용해야하는 것도 아니라서 굳이 converter로 구현할 필요가 없다고 생각했다. 그리고 converter로 다 작성하면 너무 많은 converter가 생겨서 딱봐도 뭔가 잘못된거 같은 느낌이 들었다. 관리비용이 너무 많이 들 것 같은 느낌.. Entity 클래스에 toEntity()를 , DTO클래스에 toDTO()를 Static 메..
stack trace읽는 법. 너무 좋은 글이라 저장! https://okky.kr/article/338405 OKKY | 초보 개발자를 위한 스택트레이스 읽는 법 몇 년 전에 네이버 카페에 썼던 글인데, 답변을 달려다 보니 링크가 안되서 이 곳에 옮겨 적습니다. 초보 개발자분들이 제대로 된 디버그 방법을 배우지 못해 오류가 나면 무턱대고 검색부터 하 okky.kr 구글링 하다가 좋은 글을 발견해서 남겨놓음.
SpringBoot Map으로 파싱하기. Jackson @ OAuth를 진행하던 중 아래의 문자열을 파싱해야하는 상황이 왔다. 아래의 형식은 네이버 OAuth 응답 형태임. 아래의 JSON을 어떻게 파싱하나 궁금했다.. 객체로 바인당 하려면 계층 구조 때문에 객체를 2개 정의해야하는 상황임.. 귀찮았다. 그냥 Map으로 받으면 알아서 해주지 않을까? jackson이 어떻게 동작하는지 궁금했다. jackson은 스프링 부트에 기본적으로 포함되어 있으므로 별도의 설정을 하지 않아도 된다. 컨트롤러에서 json->object 바인딩을 할 때 Jackson으로 파싱, 바인딩한다. {resultcode=00, message=success, response={id=22323-O8aLaUSxljfFZ52g4, age=20-29, gender=M, email=32131@g..
springboot OAuth 네이버 아이디로 로그인 @ 처음에 네이버 로그인을 구현할 때 매우 힘들었던 기억이 있어서 남겨놓으려고 함. 기본적으로 아래에 있는 OAuth 순서를 잘 살펴보자. 본 그림 중에 젤 자세하다. 글을 읽다가 이해가 안되면 수시로 올라와서 보도록 하자. @ 먼저 혼자 하고싶고 OAuth에 대충 안다면 네이버 developers들어가서 API명세와 같이 다른거 보지말고 튜토리얼 - web애플리케이션 보면 된다. 설명이 잘되어있음. https://developers.naver.com/docs/login/web/web.md Web 애플리케이션 - LOGIN 네이버 로그인은 서버 사이드 언어인 PHP나 Java로 개발한 웹 애플리케이션에도 적용할 수 있습니다. 또한 프런트엔드에서 사용하는 JavaScript를 사용해도 적용할 수 있습니다...
spring boot jwt filter, converter JWT filter 를 구현해놓았는데 JWT를 안쓰게 되어서 아까워서 남김.. 사실상 jjwt의 라이브러리 사용법 정도임. package pnu.problemsolver.myorder.filter; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import pnu.problemsolver.myorder.domain.Role; impo..
Spring, JPA, mariadb 시작 에러 JPA dialect(방언)~라고 에러뜰 때 아래의 설정을 추가해주면 된다. dialect : DB마다 조금씩 다른 문법을 의미함. mysql을 사용할 때는 mysql dialect를 사용해야함. 각자 사용하는 DB에 따라 다른 값을 가진다. mariadb는 mysql을 사용하면 되고 주석에 나와 있듯이 mssql은 sql_server를 사용하면 된다. 주의할점. properties파일을 작성할 때 뒤에 공백이 있으면 안될 때가 있다. 예로 14번줄 mysql뒤에 공백이 있으면 인식못한다. 전체 application.properties파일. 마찬가지로 root도 뒤에 공백있으면 안된다. "root"가 아닌 "root "로 접근한다. 초반에 table구조가 바뀔 상황이 많을 때는ddl-auto=create..
Gradle build.gradle 버전별 차이 compile, runtime, testCompile, and testRuntime은 gradle 4.1부터 deprecated implementation, runtimeOnly, testImplementation, and testRuntimeOnly으로 대체됨. https://stackoverflow.com/questions/23796404/could-not-find-method-compile-for-arguments-gradle