반응형

JAVA 151

[230327] javax.validation:validation-api에서 @Valid가 먹히지 않을 때 (feat. spring-boot-starter-validation)

사이드 프로젝트에서 코드리뷰를 하면서 아래와 같은 의문점이 생겨났다. 스프링부트를 사용하는 보통의 경우 `spring-boot-starter-validation`을 사용하는데, 팀원이 javax.validation:validation-api` 의존성을 삽입했길래 해당 관련 궁금증이 생겼다. spring-boot-startger-validation은 평상시에 많이 사용했었기 때문에 javax.validation:validation-api 의존성에 대해서 Maven Repository를 찾아보았다. 우측 하단의 Date에서 알 수 있듯이, javax.validation.validation-api 의존성의 마지막 updated가 2017년이다. 뭔가 deprecated의 냄새가 진동했지만, 해당 PR의 중점 ..

[ERROR] JPA initializationError 해결 방법 모음 및 대처법

스프링 프레임워크에서 JPA ORM을 이용하면 반드시 한 번쯤은 만날 수밖에 없는 에러가 있다. could not prepare statement; SQL; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement at org.springframework.orm.jpa..

[Java] PermGen 영역 대신 Metaspace가 도입된 Java 8 이후의 JVM 구조 및 JVM 튜닝 맛보기

jdk 1.7 이하, 즉 Java 8 이전 버전에서의 JVM 메모리 구조(Runtime Data Area)와 Java 8 이후의 JVM 구조는 아래와 같은 차이가 존재한다. Eden 영역과 Survivor, Old 영역의 존재는 변함이 없다. 하지만 Java 8 이후부터는 Permanent Heap(이하 Permgen) 영역이 제거되고 Metaspace 영역이 생성된 것이다. 특히 눈여겨볼만한 점은 Permgen은 Heap 영역에 속했었는데 Metaspace는 Native Memory 즉 OS 관리대상에 속한다는 것이다. 근데 Permgen(Java 7 이하), Metaspace(Java 8 이후)가 뭐하는 녀석인데? 여기서 잠깐, Permgen (Metaspace)에서는 무엇을 관리하는걸까? 자, 잠깐..

[Spring Security] MockMvc에서 csrfToken을 이용해 403 Forbidden을 해결해보자

스프링 시큐리티를 이용하면 기본적으로 csrf() 옵션이 설정된다. 그렇기 때문에 GET Method를 제외한 POST, DELETE 등이 제대로 실행되지 않고 403 Forbidden 에러를 내뱉을 수 있다. 위 에러는 아래 테스트코드에서 발생했다. 여기서 csrf 공격이란, 간단히 말해서 아래와 같다. 공격자가 임의로 이미지나 하이퍼링크에 자신이 만든 악성링크를 첨부하거나, 이메일로 전송한다. 사용자는 실수로 해당 링크를 클릭한다. 이 때, 사용자는 인증이 완료된 로그인된 상태여야 한다. 공격자는 사용자가 링크를 클릭함으로써 JSESSIONID 등 권한을 탈취하여 마음껏 크래킹할 수 있는 상태가 된다. 이러한 공격을 csrf 공격이라고 한다. 왜 테스트 코드에서 403 Forbidden이 뜬걸까? 먼..

[221231] 유스콘 2022 웨비나 컨퍼런스 후기

올해도 우아한형제들, NEXTSTEP에서 주관하고 유스방 제이슨이 운영하는 유스콘 2022 행사가 개최됐다! 작년에는 아무것도 모르는 상태에서 컨퍼런스에 참여했다면, 올해는 우아한테크코스 과정을 수료하고 지식이 좀 쌓인 상태에서 참여하는 것이라서 더더욱 많은 내용을 이해할 수 있으리라 생각된다. 또, 그만큼 기대되기도 한다 ㅎㅎ 유스콘 2022 행사에 대한 소개는 아래 링크를 참고하자. https://frost-witch-afb.notion.site/YOUTHCON-22-a18e4511463a416e8befd99993355215 YOUTHCON'22 유쾌한 스프링방에서 탄생한 유스콘은 👨‍🎓 젊은 개발자와 👨‍🏫 선배 개발자가 함께 가치 있는 기술에 관한 정보와 경험을 공유하는 콘퍼런스입니다. 여기서 발..

[Spring] 여러 포트에서 동일 애플리케이션 실행하기(Gradle, Maven)

애플리케이션 실행 방법에는 인텔리제이 IDE, 터미널, jar파일 직접 실행과 같이 다양한 방법이 존재한다. 프로세스 여러 개를 띄울 경우, 포트 충돌 이슈를 겪을 수 있기 때문에 random port로 설정해주거나 별도로 포트 세팅을 해줄 수 있다. Spring, IntelliJ 환경에서 어떻게 여러 애플리케이션을 띄울 수 있는지 여러 방법들을 기록해보려 한다. 환경 Spring Boot 2.x IntelliJ(인텔리제이) Gradle 또는 Maven 1. 인텔리제이 edit configurations 에서 application 추가 후 VM options에서 port 변경 위 사진처럼 우측 상단에 보이는 스프링 애플리케이션 실행 부분을 클릭하면 Edit Configurations... 가 보인다. 빨..

[Spring] MapStruct를 이용한 Entity <-> DTO 고찰 (2)

mapstruct는 entity dto를 자동으로 반환해주는 객체 매핑 라이브러리이다. 엄청 옛날에 이런 포스팅을 작성한 적이 있다. (진짜 옛날 글이라 지식이 부족할 때 작성했어서 굳이 열람할 필요는 없다.) https://kth990303.tistory.com/131 [Spring] MapStruct를 이용한 Entity, Dto 반환 및 고찰 그 동안 View layer에서 Entity에 직접적으로 접근하도록 코드를 짰던 나에게, 이번 DTO 적용은 상당히 고된 일이었다. 사실 dto는 단순한 entity의 클론 느낌이라 적용이 크게 어렵지 않을 줄 알았는데, kth990303.tistory.com 사실 위 포스팅은 DTO 반환에 대한 고찰이나 다름 없는 포스팅이었다. 지금 내가 생각하는 DTO의 ..

[221125] 우아한테크코스 4기 수료

우아한테크코스 4기 카테고리에 쓰는 마지막 글이다. 2022년 2월 8일부터 열심히 달려온 우아한테크코스가 2022년 11월 25일을 마지막으로 종지부를 찍었다. 2022년은 진짜 우아한테크코스로 순삭됐다. 정말 바쁜 나날들의 연속이었지만, 그 날들 덕분에 훨씬 성장한 나 자신을 마주볼 수 있게 됐다. 우아한테크코스가 아니었다면 아마 나는 2022년 2학기에 부족한 실력을 가지고 복학했을 듯하다. 수료식은 13시부터 진행됐다. 왼손, 리사 코치님의 진행과 함께 크루들이 작성한 롤링페이퍼를 읽었다. 수많은 사연들과 감동사연들, 나 자신에게 보내는 글, 코치님께 보내는 글 등. 다양한 롤링페이퍼들이 많았다. 수료식 채팅도 스레드로 진행됐다. 총 402개의 댓글이 달렸는데, 진짜 별별 말들이 다 오고갔다 ㅎㅎ..

[Spring] @Configuration vs @Component

스프링은 IoC 컨테이너를 통해 적재적소에 빈 객체를 반환해준다. @Configuration, @Component 어노테이션을 붙여주면 해당 클래스는 스프링 관리 대상이 된다는 점을 보면 크게 차이는 없어보일 수 있다. 어떠한 상황에 @Configuration을 쓰고 어떠한 상황에 @Component를 쓰는 것이 좋을까? 1. @Configuration은 @Component를 포함하고 있다 둘의 차이점을 비교하기 전에, @Configuration이 @Component를 포함하고 있다는 것을 확인하자. 그렇기 때문에 @Configuration 어노테이션이 붙여진 클래스도 @Component 어노테이션이 붙여진 클래스처럼 스프링 컨테이너 관리 대상이다. 참고로 @Component는 아래와 같이 소개돼있다. ..

[221111] 우아한테크코스 4기 리크루팅데이 후기

우아한테크코스도 어느덧 막바지에 다다르고 있다. 11월 초부터 11월 25일까지 우아한테크코스 레벨5 기간이 진행되는데, 이 기간동안에는 미션, 프로젝트 기간이 아닌 취업준비 기간으로 진행된다. 오늘은 레벨5 기간 중 꽤 큰 행사에 속하는 `리크루팅데이` 후기를 작성해보려 한다. 만약 해당 글이 문제가 되면 이 글은 삭제 또는 비공개처리할 예정이다. 회사명들은 가리고 포스팅하는 점 양해구함. 특정 기사에 회사명들이 이미 공개돼있어서 여기에도 써도 될 것 같다. 총 20개의 기업이 참여했다. ▲네이버파이낸셜 ▲카카오페이 ▲두나무 ▲비바리퍼블리카(토스) ▲클래스101 ▲야놀자에프앤비솔루션 ▲오피지지 ▲퍼즐벤처스(오일나우) ▲메이즈 주식회사 ▲지지틱스 ▲에이비일팔공(AB180) ▲스마트푸드네트웍스 ▲온더룩 ▲..

반응형