본문 바로가기

728x90
반응형

웹 프로그래밍

(30)
[Spring] Bean Scope spring bean scopesingleton (default) : Spring Container 시작과 종료까지 유지되는 가장 넓은 범위의 스코프prototype : Spring Container가 프로토타입의 빈 생성. 의존관계 주입까지만 관여하고 더이상 관리하지 않는 짧은 범위의 스코프webrequest : 고객의 웹 요청이 들어오고 나갈 때까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프websocket : 웹 소켓과 동일한 생명 주기를 가지는 스코프 Scope 설정ComponentScan 자동 등록, @Bean을 이용한 수동 등록 모두 Scope 지정 시 아래와 같이 작성하면 됩니다..
[Web] CentOS에 tomcat 설치 1. Tomcat 다운로드 https://tomcat.apache.org/ 톰캣 공식 사이트에서 wget으로 zip 파일을 다운로드 받습니다. $ wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.83/bin/apache-tomcat-8.5.83.zip -P /usr/local/tomcat8 2. 압축 풀기 $ unzip apache-tomcat-8.5.83.zip // 안에 있는 내용 tomcat8 디렉토리로 이동 $ cd apache-tomcat-8.5.83 $ mv * /usr/local/tomcat 정상적으로 압축이 풀렸을 경우 bin 폴더의 모든 shell script에 실행 권한을 부여합니다. $ cd /usr/local/tomcat/bin $ chmo..
[Swagger] OpenAPI 설정 이슈(Failed to load remote configuration / Failed to load API definition) 회사에서 API 문서를 좀 더 편하고 보기 좋게 만들기 위해 기존에 있던 프로젝트에 Swagger(또는 OpenAPI)를 추가하게 되었습니다. 지난번에 Swagger를 적용했던 경험이 있어 금방 Swagger 설정이 끝날 거라 생각했습니다. 기존에 Swagger를 적용했었던 Project들과는 구조와 설정, 사용 라이브러리 등이 많이 달랐기 때문이었던 건지 바로 설정이 되지 않았습니다. 사소한 것들로 며칠 간 삽질한 경험을 공유하겠습니다. 부디 저 같은 삽질은 안하시길,,,ㅎ ⚠️ 코드는 테스트 코드로 작성했습니다 ⚠️ project 구조 com ㄴ openapi ㄴ openapi3test ㄴ config ㄴ SwaggerConfig.java ㄴ WebSecurityConfig.java ㄴ WebMvcC..
[Swagger] Springfox Swagger vs SpringDoc Springfox Swagger vs SpringDoc Spring 기반의 API Docs를 가능하게 해주는 건 크게 Springfox Swagger와 SpringDoc이 있습니다. 그러나 최근 Spring에서 밀고 있는 건 SpringDoc입니다. Springfox Swagger를 잘 발전시킨 것이 SpringDoc이기 때문입니다. Springfox Swaggerrk 2018년까지 많이 사용되다 2018년 6월을 마지막으로 업데이트가 중지되었고 그 사이 2019년 7월에 springdoc이 나와 SpringDoc을 더 많이 사용하고 있습니다. 그러던 중 2020년 6월 Springfox가 새로운 버전을 만들어 현재는 두 개를 혼용해서 많이 사용하고 있지만, Spring에서 더 선호하는 것도 Spring..
[Swagger] Swagger 2.x VS OpenAPI 3.x Swagger OAS(Open Api Specification)를 위한 프레임워크 API 문서화를 쉽게 할 수 있도록 도와주며, 파라미터를 넣어서 실제로 어떤 응답이 오는지 테스트 할 수 있습니다. 협업 하는 클라이언트 개발자들에게도 Swagger만 전달해주면 API Path와 Request, Response 값 및 제약 등을 한번에 알려줄 수 있습니다. Swagger 2.x와 OpenAPI 3.x의 관계 SmartBear가 Swagger를 인수했을 때 Swagger 사양을 OpenAPI 2.0으로 이름을 변경했지만, OpenAPI 사양과 함께 동작하는 상용 및 오픈 소스 도구를 참조하기 위해 Swagger라는 이름을 유지했습니다. OpenAPI = 사양(Swagger 사양으로 알려진 사양 자체) Swa..
[Spring] Spring Boot Validation annotation 정리 @RequestBody 옆(오른쪽, 왼쪽 상관 없음)에 @Valid 어노테이션을 쓴 뒤에 해당 DTO의 필드 위에 유효성 검증을 원하는 대상에 부합하는 annotation을 써줍니다. 사용법 자세한 사용법은 아래 글을 참고해주세요~ https://yundevnote.tistory.com/64 [Spring] Spring Boot에서의 validation check Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증은 여러 계층에 걸쳐서 적용됩니다. Client의 데이터는 조작이 쉬울 뿐더러 모든 데이터가 정상적인 방식으로 들어오 yundevnote.tistory.com @Getter @RequiredArgsConstructor public class UserRequest..
[Spring] Spring Boot에서의 validation check Validation 올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해 데이터 검증은 여러 계층에 걸쳐서 적용됩니다. Client의 데이터는 조작이 쉬울 뿐더러 모든 데이터가 정상적인 방식으로 들어오는 것은 아니기 때문에 Client Side 뿐만 아니라 Server Side에서도 데이터 유효성 검사를 해야 할 필요가 있습니다. 스프링 부트 프로젝트에서는 @Validated를 이용해 유효성을 검증할 수 있습니다. @Valid, @Validated 차이 @Valid는 Java에서 지원해주는 어노테이션이고, @Validated는 Spring에서 지원해주는 어노테이션입니다. @Validated는 @Valid의 기능을 포함하고, 유효성 검사할 그룹을 지정할 수 있는 기능을 추가로 제공합니다. 스프링에서는 애노..
[Spring] DTO의 @Builder, @RequestBody와 생성자 RestAPI를 생성 후 API 테스트를 하던 중 몇 가지 사실을 알게 되어 같은 문제로 어려움을 겪고 있는 분들께 도움이 되고자 글을 작성하였습니다. 잘못된 내용이 있다면 가감 없이 피드백 주시길 바랍니다 🙇‍♀️ 아래의 예제는 임시로 만든 DTO, Controller이니 가볍게 보고 넘어가시길 바랍니다. 오늘 포스트의 핵심은 Controller가 Client로부터 받은 request body를 DTO로 매핑시키는 방법과 @Builder 어노테이션 사용 시 주의할 점이니 이를 떠올리며 읽어주시면 좋을 것 같습니다~ 우선 모든 클라이언트 요청을 주고받을 때 사용하는 DTO 클래스를 각각 역할 별로 나누어서 작성하였습니다. 아래는 로드 밸런서 생성 시 @RequestBody로 넘어올 객체를 정의한 클래스 ..

728x90
반응형