Spring

· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념과 (2) 스프링 시큐리티 - 스프링 시큐리티 세션에서 이어지는 글입니다. 서론 이전 글에서 세션은 하나의 서버를 운용할 때를 상정하고 나온 개념이라는 전제로 세션을 설명했었습니다. 하지만 서버의 규모와 트래픽이 나날이 갈수록 커지면서 서버를 여러대로 분산시켜야 하는 경우가 비일비재해졌습니다. 서버를 여러대로 분산시킨다는 것은 곧, 여러 대의 서버에서 하나의 세션을 공유해야한다는 전제가 새로 만들어지게 되는 셈입니다. 이것을 어떻게 해결할 수 있을까요? 물론, 세션을 관리하는 인메모리 DB를 가지는 중앙집중식 서버를 하나 두거나, 관련 인증 서버 체계를 두거나 하면 될 것입니다. 하지만 서버를 더 늘려야 하는데 인증 서버를 더욱 더 늘려야..
· Study/Spring
이 포스팅은 (1) 스프링 시큐리티 - 알아두어야 할 세 가지 개념에서 이어지는 글입니다. 서론 세션은 다들 아시다시피 본디 하나의 서버를 운용할 때를 상정하고 나온 개념입니다. 다시 말씀드립니다. 프론트엔드와 백엔드가 하나의 서버에 있을 때 세션을 보통 사용한다고들 말합니다. 저도 처음에 JWT같이 다른 인증 시스템을 만들어 볼 때 혼동이 왔었습니다. 요즘 프론트-엔드와 백-엔드의 서버를 나누다 보니 세션도 나누는 것인가? 하구요. 세션을 개발하기 전에 꼭 잊지 말아야 할 사항이 바로 본디 세션은 하나의 서버에서 운용하도록 설계가 되어졌다 입니다. 이 가정을 바탕으로 글을 쓰도록 하겠습니다. (당연하게도 지금은 여러 서버에서 세션을 운용하는 방법이 있습니다! 레디스같은 하나의 인메모리에서 세션을 관리한..
· Study/Spring
서론 스프링 시큐리티는 아무리 봐도 복잡하게 설계가 되어 있습니다. 각 단계를 추상화하고, 분리하다보니 중간에서 하는 일이 많아지고, 밖에서 접근하는 방법도 달라졌던 것 같습니다. Spring Security는 공부를 해보니 여전히 정말 쉽지 않은 스프링 모듈 중에 하나입니다. `Security`라는 단어에 걸맞게도 복잡하게 이루어진걸지도 모릅니다. 아무튼 공부를 하면서 제가 알아낸 정보들, 공부했던 정보들을 바탕으로 포스팅을 해보려 합니다. 또, 실전으로 연습했던 코드도 포함해서요. 이번 포스팅에서는 일단 간단하게 Security에서 저희가 짚고 넘어가야할 부분들에 대해서 적어보겠습니다. SecurityContext 시큐리티는 시큐리티 모듈의 `SecurityContext` 안에서 인증/인가 정보가 다..
이 포스팅은 (1) restdocs + openapi3 + swagger-ui 설정을 해보자 - 설명편에서 이어지는 글입니다. (준비) Swagger-UI 다운로드 https://github.com/swagger-api/swagger-ui/releases Releases · swagger-api/swagger-ui Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API. - swagger-api/swagger-ui github.com 위 링크에서 Swagger-ui를 다운로드를 받고 나면, 아래와 같이 진행중..
서론 보통 현재 다니고 있는 부트캠프에서 저는 백엔드 포지션으로 개발할 때 프론트엔드와 작업할 때 다음과 같은 순서로 API를 맞춰나갔습니다. 노션으로 처음에 싱크업을 하고, FastAPI(BE)나 MSW(FE)같은 툴을 이용한 Mock 서버 구성을 하여 개발 속도를 맞춘 다음 RestDocs나 Swagger같은 API 문서 자동화 툴을 이용하여 API 문서를 작성 프론트엔드와 협업을 위한 API 문서를 작성할 때 노션에 API 문서를 위와 같은 형태로 많이 작성하곤 했습니다. 노션을 선택했던 이유는 보편화가 많이 되기도 했고, 실시간 작업이 가능하며, UI가 마크다운이어서 가독성이 좋고 편집하기도 좋았으며 액셀만큼은 아니지만 표와 데이터베이스 같이 데이터를 관리하기에 편리하다는 장점들이 있어서였습니다...
다대다(Many-to-Many)를 접하는 사람이라면 한 번쯤 접해보셨을 문제가 있으실 겁니다. 하나의 엔티티에 `@Id`를 2개 이상 어노테이션 적용을 못하는 문제를요.. 저 또한 프로젝트 진행 중에 다대다 클래스에서 Id에 대한 문제가 발생한 경우가 있어 이슈 트러블슈팅을 한 경험을 공유하고자 포스팅을 남깁니다. 다대다(Many to Many) 다대다는 이 글을 읽고 읽는 여러분들도 알고계시다시피 테이블과 테이블 간에 여러 개의 관계가 서로 맺어질 때 사용하는 관계입니다. (예: 상품-쿠폰, 학생-수업 등) 이 다대다 관계를 맺기 위해 스프링 프레임워크에서는 `@Entity`라는 어노테이션을 사용하여 테이블을 생성하고, 그 테이블 안에서 `@ManyToMany` 어노테이션을 사용하여 다른 테이블과 외래..
서론 요즘 부트캠프의 프로젝트를 진행한다고 정신이 없습니다... 그래서 블로그를 작성하던 습관도 다 없어지고, 진행하고 있었던 개인 사이드 프로젝트도 주춤했죠. 하지만 부트캠프의 프로젝트를 진행하면서 얻었던 것이 정말정말 많았습니다. 12월이 되면서, 개발 스터디에 대한 마음을 다잡을 겸해서 얻었던 것들을 이제라도 하나하나씩 써 나가볼 예정입니다. 내용 본 글은 CORS에 대한 지식을 어느정도 알고 계신다는 하에 작성되었습니다. CORS 설정에 앞서서, 두 가지를 설명드리고자 합니다. 첫번째는 Spring Web에서의 CORS 설정이고, 두번째는 Spring Security에서의 CORS 설정입니다. 본 글을 보시는 분들은 알고 계시다시피 Spring Web과 Spring Security는 큰 Sprin..
· TIL
✍ 이 글은 제가 오늘 공부하거나 코딩하며 배우거나 느꼈던 것들을 적는 글이므로, 해라체를 사용하는 것을 이해해주시면 감사하겠습니다. Spring Rest Docs Spring에서 API 문서를 만드는 데 제일 유명한 라이브러리는 Swagger가 아닐까 싶다. 하지만, 프로덕션 코드에 주석으로 덕지덕지 붙여줘야 한다는 단점이 있었다. 이것을 해결하기 위해 Spring Rest Docs가 나왔다! (이하 SRD) SRD의 장점은 세가지가 있다. 테스트 코드를 작성하면서 API 문서를 작성할 수 있다! 프로덕션 코드에 API 문서 관련 코드가 없다! 자유롭게 고칠 수 있다! 라는 장점이 있어서, SRD를 한 번 써보기로 했고, 개인 프로젝트에서 마침 열심히 테스트 코드를 많이 작성하고 있어서 적용을 해보았다..
요새 다니고 있는 부트캠프에서 사이드 프로젝트를 진행하고 있습니다. 게시판을 Spring boot를 활용해서 만들고 있는데, Thymeleaf를 처음 사용하다 보니 아래 문제가 발생했습니다. 문제 글을 수정하기 위해 기존 글을 form에 불러올 때, 기존 글이 form의 input의 값에 넣어지지 않는 문제가 발생했습니다. 아래 보드를 수정하는 메소드(`editBoard`)로 예시를 들어보겠습니다. // Controller.java @PostMapping("/board/edit/{board_id}") public String editBoard( @PathVariable(name="board_id") Integer boardId, @ModelAttribute("board") EditBoardDTO edit..
이전에 nodejs를 사용해서 개발할 때는, 개발 서버가 실행될 때 자동으로 웹 브라우저가 실행되어서 참 편했습니다. 하지만 스프링에서는 그런 기능이 기본으로 있지 않아, 개발할 때 항상 웹 브라우저를 수동으로 켜서 실행해야 했습니다. 이 때문에 구글링과 chatGPT의 도움을 통해 임시로나마 다음 코드를 통해 해결할 수 있었습니다. package com.example.exampleapp; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframewo..
라페dev
'Spring' 태그의 글 목록