전체 글 181

[Spring] Test 중 발생한 Dto의 'Cannot construct instance of...' 에러

위와 같은 에러가 발생했다. 처음에 다른 에러도 나서 Service, Controller 부분 다 찾아보고 디버깅 해봤는데 아래 부분에서 계속 오류가 나고 멈추는 것이었다. 하지만 문제는 역시 에러 코드를 잘 읽어야했다... Dto 부분이 문제였고 이는 기본 생성자가 없기 때문이었다. ObjectMapper가 @RequestBody를 바인딩 할 때 기본 생성자를 사용하기 때문에 그런 것이었다. lombok으로 기본 생성자를 만들어 준 후 해결되었다.

[Spring] @RequestBody 사용 시 boolean 변수 바인딩 에러 (Boolean variable binding error in requestbody annotation)

위 테스트 코드를 작성하던 중 발생한 문제였다. post를 하기 전 requestDto에서는 분명히 isActive라는 변수의 값이 true였으나 post 한 후 isActive의 값이 false로 나오는 것이었다. 다른 변수의 값들은 멀쩡히 잘 나와서 참 이해하기 어려운 버그였다... 코드를 더 살펴보니 dto에는 문제가 없어보였고 repository의 test 코드는 성공했다. 이에 controller단의 버그라 생각하고 디버깅을 진행하였다. 진행해보니 확실히 Controller에서 문제가 있었다. Controller에서 requestDto를 받는 과정에서 값이 위와 같이 바뀌는 것 같았다. 그렇다면 왜 다른 값들은 멀쩡한데 isActive 값만 버그가 나는걸까? https://projectlombo..

[Spring] 스프링 웹 계층 (spring web layer)

● Web Layer - 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarker 등의 뷰 템플릿 영역이다. - 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice)등 외부 요청과 응답에 대한 전반적인 영역을 이야기한다. ● Service Layer - @Service에 사용되는 서비스 영역이다. - 일반적으로 Controller와 Dao의 중간 영역에서 사용된다. - @Transactional이 사용되어야 하는 영역이기도 하다. ● Repository Layer - Database와 같이 데이터 저장소에 접근하는 영역이다. - Dao(Data Access Object) 영역으로 이해할 수 있다. ● Dtos - Dto(Data Transfer..

세션 vs 토큰 vs 쿠키, JWT란? (인증과 인가의 차이, authentication authorization 차이, 세션과 쿠키의 개념, JWT의 개념)

로그인을 구현한다면 꼭 알아야 할 개념들이다. 이번에 프로젝트를 진행하면서 Next-Auth를 사용해 소셜 로그인을 구현했는데, 이때 공부한 내용들과 실제 프로젝트에서 사용한 인증, 인가 방법에 대해 소개하겠다. 쿠키(Cookie)란? 먼저 쿠키다. 쿠키는 사용자를 기억하기 위해 서버가 사용자의 브라우저에 저장하는 데이터(작은 기록 정보 파일)라고 할 수 있다. 사용자가 사이트에 방문하면, 1. 브라우저는 서버에 요청(request)을 보내고 2. 서버는 응답(response)한다. 이 응답에는 사용자가 찾던 페이지 정보, 데이터뿐만 아니라 브라우저에 저장하고자 하는 쿠키가 있을 수 있다. 이 쿠키를 브라우저에 저장하게 되면, 사용자가 해당 웹 사이트를 방문할 때마다 브라우저가 자동으로 해당 쿠키를 요청..

Base/용어 개념 2022.12.20

[소프트웨어 마에스트로] SW마에스트로 13기 수료 후기 (맡은 역할 / 프로젝트 소개 / 기술적 어려움 극복 사례 / 협업 방식)

오늘인 12월 15일 수료식을 끝으로 소마 생활이 끝났다. 약 8개월(4~5월 예비과정 + 6월~11월 본과정)간의 소마 생활을 모두 마무리 하고 이제 13기 연수생에서 수료생이 되었다. 정말 많은 것을 경험하고 배우며 성장할 수 있는 시간이었다. 모든 것을 적을 순 없겠지만 성장한 부분, 느낀 점등을 정리하고 진행한 프로젝트를 구체적으로 소개해보려고 한다. 팀에서 어떤 역할을 수행했나? 프론트엔드 개발자로 참여했으며 여러가지 일을 도맡아 처리하였다. 웹 프론트엔드 개발 및 크로스 플랫폼 앱 개발 : 웹으로 서비스를 개발하고 이를 웹뷰로 감싸 크로스 플랫폼 앱을 만듦 (+ 로그인 구현) 전문가 및 제휴 기업 컨택 관리 및 인터뷰 진행 : 약 50명의 약사 및 전문의와 20개의 제약사에 직접 전화 혹은 이..

[Spring] JPA 란? (JPA의 탄생 이유와 개념, 장단점) (+ ORM이란 / ORM의 개념)

기존의 문제점 현대의 웹 어플리케이션에서는 대부분 관계형 데이터베이스(RDB)가 쓰인다. (ex. Oracle, MySQL...) 그러다 보니 객체를 관계형 데이터베이스에서 관리하는 것은 무척 중요해졌다. 문제는 코드의 대부분이 어플리케이션 코드보다 SQL로 가득차게 됐다는 것이다. 이는 관계형 데이터베이스가 SQL만 인식할 수 있었기 때문이었다. 이에 각 테이블마다 기본적인 CRUD SQL을 매번 생성해야 했다. 이런 문제로 인해 자바 클래스를 아무리 잘 설계한다해도 결국은 SQL을 통해야만 저장, 조회가 가능했고 반복적인 SQL들이 늘어났다. 규모가 커질수록 테이블은 늘어났고 테이블의 몇 배가 되는 SQl은 만드는 것 뿐만 아니라 유지 보수도 굉장히 어려웠다. 또한 패러다임 불일치 문제도 있었는데, ..

Back-End/Spring JPA 2022.12.14

[Spring] DAO, DTO, VO의 개념과 차이점

DAO (Data Access Object) : DB의 data에 접근하기 위한 객체로 실제로 DB에 접근하는 객체이다. 프로젝트의 서비스 모델과 실제 DB를 연결하는 역할을 하며, JPA에서는 DB에 데이터를 CRUD하는 Repository 객체들이 DAO라고 볼 수 있다. (좀 더 찾아보니 DAO와 REPOSITORY에 의도와 인터페이스의 메소드 시그니처에 유사성이 존재하지만 그렇다고 해서 둘을 동일한 패턴으로 취급하면 안된다고 한다. 아래 김영한 님의 말씀을 인용해 적어둔다.) repository := dao (비슷함) 이 둘은 거의 같다고 생각하셔도 무방합니다. 좀 더 깊이있게 차이를 설명하면, repotiroy는 엔티티 객체를 보관하고 관리하는 저장소이고, dao는 데이터에 접근하도록 DB접근 ..

컴공 전공 살려 군대가는 법 총정리 (2023년 ver) (군대 모집병 추천 / 군대 꿀보직 / 컴공 군대)

1년 6개월, 30개월씩 가던 시절과 비교하면 짧다고 할 수도 있지만 절대 짧지 않은 시간이라 생각한다. 전공을 잘 살려 갈 수 있다면 남들보다 2년 남짓의 시간을 앞서 있을 수 있다. 군대를 준비하는 동안 많은 우여곡절이 있었는데 비슷한 처지에 있는 분들께 도움이 됐으면 하는 마음에 글을 작성해본다. 우선 크게 카테고리를 나누자면, 컴공이 노려볼 수 있는 괜찮은 군복무 방법에는 아래와 같은 것들이 있다. 카투사, 육군 기술행정병, 육군 전문특기병, 공군 일반병, 공군 전문기술병, 공군 전문특기병, 산업기능요원, 전문연구요원, 공익 군대는 크게 모집병과 일반병으로 나뉜다. 필자가 설명하는 대부분은 모집병이며 모집병은 아무래도 어느 정도 걸러져 오기에 더 괜찮은 군 생활을 할 확률이 높다. 각 챕터별로 간..

진로 2022.12.13

TOPCIT 벼락치기로 고득점 하는 법 (610점 후기) (TOPCIT 준비하는 법 / TOPCIT 공부법 / TOPCIT 에센스 Ver.3 공유 / TOPCIT 기출문제 공유)

작성일 기준 약 한 달전인 22년 10월 29일에 TOPCIT(탑싯)을 응시하고 왔다. 오늘 결과가 발표되어 오늘 포스트를 작성한다. 높은 점수는 아니지만 꽤 짧은 시간에 얻은 점수이기에 준비한 방법을 공유하고자 한다. 준비의 준비 탑싯은 준비하기 참 어려운 시험이다. 일단 시험을 잘 볼 동기가 적기에 많이 활성화 돼있는 시험이 아니며 그에 따라 정보도 적기 때문이다. 필자도 소프트웨어 마에스트로라는 프로그램에서 개인 평가로 들어가기에 어쩔 수 없이 준비했던 시험이었다. 어찌 되었든 이 글을 보는 사람들은 각자의 이유로 '짧은 시간'내에 '어느 정도'의 점수를 받길 원하는 사람들이라 생각한다. 필자는 시험보기에 앞서 3일 정도 준비했기에 이 글이 도움이 될 것이라 생각한다. 먼저, 탑싯 공부 준비를 위해..

[Typescript / Dayjs] 1분만에 글 작성 경과 시간 구현하기 (몇 분 전, 몇 시간 전, 며칠 전) (measure time elapsed on typescript, javascript)

유튜브 등을 보면 영상이 올라온 경과 시간등이 표시된다. 커뮤니티 등을 개발하다보면 글 작성 경과 시간을 표시해줄 필요가 있는데 Dayjs를 사용하면 간단하게 구현할 수 있다. Dayjs는 기존의 구린 자바스크립트 기본 날짜 함수인 Date를 개선시켜준 라이브러리로 무척 가볍고 사용하기 편하다. Day.js · 2kB JavaScript date utility library 2kB JavaScript date utility library day.js.org 자바스크립트에서 날짜를 다룬다면 무조건 무조건 무조건 쓸 것을 추천한다. 우선 dayjs 라이브러리를 설치해준다. npm i dayjs 경과시간 함수를 만들기 위해선 duration 플러그인을 사용해야한다. Day.js · 2kB JavaScript ..

반응형