728x90

Web 15

[Swagger & SpringBoot 3.x] 스프링부트 3.x 스웨거UI 적용- SpringDocs

Trouble스프링부트 2.x대에서 사용하던 Springfox 라이브러리가 메인테이너되지 않는 이슈... 진짜 별의별 레퍼런스를 찾아봐도 내 기존 Springfox콜랍 코드를 낫게해줄 처방전은 없었다ㅠ Solution스프링부트 3.x에서 Swagger를 적용하기 위해서는 SpringDocs 라이브러리를 활용해야함. 과정이 궁금한 사람들도 있을테지만, 이 블로그는 나의 동의보감 이니까 결론적인것만 담아보겠다.ㅎ Result(결론적인 해결과정)Step 1 : build.gradle많고 많은 의존성들이 있지만,내 개발 환경과, Swagger를 위한 의존성만 남겨보자면,plugins { id 'java' id 'org.springframework.boot' version '3.2.3' id 'i..

Web/SrpingBoot 2025.04.09

스프링과 객체 지향 프로그래밍 - SOLID(객체 지향 설계의 5가지 원칙) 관점

SOLIDSRP : 단일 책임 원칙Single Responsibility Principle한 클래스는 하나의 책임만 가져야 한다. 큰 책임이든, 작은 책임이든, 변경이 있을 때 파급 효과가 적어야한다. 변경이 있어도 다른 곳에는 영향을 끼치지 않게계층을 잘 나누는 것은 단일 책임 원칙을 지키기 위함이다.   OCP : 개방-폐쇄 원칙Open/Closed Principle소프트웨어 요소는 확장에는 열려있으나, 변경에는 닫혀있어야 한다. java에서의 다형성을 활용하여 OCP를 지킬 수 있다. 역할과 구현의 분리를 생각해보자.인터페이스(역할)를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현할 수 있다. 확장에는 열려있다 : 인터페이스를 구현한 새로운 클래스는 얼마든 만들 수 있다.변경에는 닫혀있다..

Web/SrpingBoot 2024.05.05

스프링과 객체 지향 프로그래밍 - 다형성 관점

객체 지향 프로그래밍 프로그램을 유연하고 변경이 용이하게 만들음. → 대규모 소프트웨어 개발에 많이 사용. 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나, 여러개의 독립된 단위, 즉 "객체들의 모임"으로 파악하고자 하는 것. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있음. 역할과 구현의 분리 세상을, 역할 & 구현으로 구분해보자. → 세상이 단순해지고, 유연해지며, 변경도 편리해진다! 클라이언트에게는 다음의 장점이 있다. 대상의 역할(인터페이스)만 알면 된다. (이거 자동차?ㅇㅇ 그럼 됐음. 운전 가능.) 구현 대상의 내부 구조를 몰라도 된다. (내부구조 알아야만 운전을 할 수 있는게 아니니까) 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다. (내부구조 바뀌어도 자동차 역..

Web/SrpingBoot 2024.04.24

스프링부트3 백엔드 - 3. 스프링 부트 3 구조 이해하기

스프링 부트 3 구조 살펴보기 각 계층이 양 옆의 계층과 통신하는 구조. 계층 : 각자의 역할과 책임이 있는 어떤 소프트웨어의 구성 요소. 서로 소통할 수 는 있지만, 다른 계층에 직접 간섭하거나 영향을 미치지 않음. 네가지 계층 프레젠테이션 계층 : HTTP 요청을 받고 이를 비즈니스 계층으로 전송. 컨트롤러가 맡는 역할. 컨트롤러는 스프링부트 내 여거래가 있을 수 있음. 비즈니스 계층 : 모든 '비즈니스 로직'(서비스를 만들기 위한 로직)을 처리함. 서비스가 맡는 역할. 퍼시스턴스 계층 : 모든 DB 관련 로직을 처리함. DB에 접근하는 DAO객체( DB계층과 상호작용하기 위한 객체 )를 사용할 수도 있음. 리포지토리가 맡는 역할. 스프링부트 프로젝트 디렉터리 구조 main : 실제 코드를 작성하는 ..

Web/SrpingBoot 2023.10.08

스프링부트3 백엔드 - 2. 스프링 부트 3 시작하기(스프링과 스프링부트 차이, IoC, DI, AOP, PSA )

스프링과 스프링 부트 스프링의 등장 엔터프라이즈 애플리케이션 대규모의 복잡한 데이터를 관리하는 애플리케이션. 많은 사용자의 요청을 동시에 처리해야 하므로 서버 성능, 안정성 ,보안이 중요함. ▶ 기능 개발에만 집중할 수 있게끔 엔터프라이즈 애플리케이션을 위한 개발환경을 제공함. → 스프링 프레임워크 스프링을 더 쉽게 만들어주는 스프링 부트 Spring Boot 설정이 매우 복잡한 스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 만들어주는 도구. 스프링 프로젝트를 빠르게 설정할 수 있음. 스타터(의존성 세트) 사용하여 간편하게 의존성을 사용하거나 관리할 수 있음. 자바(객체 지향) 언어 기반의 프레임워크 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 좋은 객체 지향 애플리케이션을 개발할 수..

Web/SrpingBoot 2023.08.26

스프링부트3 백엔드 - 1. 자바 백엔드 개발자가 알아두면 좋은 지식

서버 & 클라이언트 클라이언트 서버에게 요청하는 프로그램 ex. 웹 브라우저 : 주소 입력 후 Enter 키를 눌러 정보를 요청함 ( 화면 확인 ) "서버에 요청한다" 서버 클라이언트의 요청을 받아 처리하는 주체 데이터베이스 데이터베이스 여러 사람이 데이터를 한 군데에 모아놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소. ex. MySQL, 오라클, 포스트그레SQL ··· ▶ 데이터베이스가 아닌, 데이터베이스를 관리하기 위한 '시스템의 이름' 데이터베이스의 종류 NoSQL, NewSQL, RDB RDB ( Relational Database ) : 관계형 데이터베이스 데이버베이스를 행 · 열로 이루어진 테이블로 관리함. 기본키( primary key) 를 사용해 각 행을 식별 / 각 테이블 간 ..

Web/SrpingBoot 2023.08.17

HTTP 상태 코드 정리

HTTP ( Hypertext Transfer Protocol ) 웹 서버와 웹 클라이언트 사이에서 데이터를 주고 받기 위해 사용하는 '통신 방식' TCP/IP 프로토콜 위에서 동작. ▶ 웹을 이용하려면, 웹 서버와 웹 클라이언트는 TCP/IP동작에 필수적인, IP주소를 가져야 함. 전송 가능한 데이터 : 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송 가능. ex. 하이퍼텍스트( HTML, XML··· ), 이미지, 음성, 동영상, JavaScript, 각종 문서 파일( PDF ) 등 응답 메시지 상태라인에 있는 상태 코드를 보고, 서버에서의 처리 결과를 파악할 수 있다. 상태 코드 : 세 자리 숫자. IANA라는 인터넷 할당 번호 관리 기관이 'HTTP 상태 코드 레지스트리'라는 이름으로 관리함. ..

Web 2023.08.05

Get 과 Post 의 차이

Get Post 실패 시 될 때까지 반복 실패 시 반복하지 않음 캐시 가능 캐시 불가능 히스토리에 남음 히스토리에 남지 않음 북마크 될 수 있음 북마크 될 수 없음 파라미터 노출 됨 파라미터 노출 안됨 인터넷 연결이 되지 않은 상태에서는 웹페이지 접속을 시도해도 접속이 되지 않는다. 그러다 인터넷 연결이 다시 된 경우, 페이지가 자동으로 새로고침 되는 경우가 있지 않은가? 이런 경우 Get이 쓰였다고 생각하면 편하겠다. Get 클라이언트가 어떠한 리소스로부터 정보를 서버에 요청하기 위해 사용되는 메서드. Get은 오직 데이터를 read할 때만 사용되고 수정할 때는 사용되지 않는다. ▶ 데이터 변형의 위험 없이, 안전하게 사용할 수 있다. 파라미터가 노출되므로, 민감한 데이터를 다루면 안된다. Post 리..

Web 2023.08.05

HTTP의 특징 및 쿠키, 세션, 캐시 비교

HTTP 특징 1. Stateless : 무상태성 클라이언트 상태정보를 갖지 않는 서버 처리 방식. 클라이언트와 첫 번째 통신에서 데이터를 주고받았어도, 다음 통신에서 이전 통신한 데이터들을 유지하지는 않음. 2. Connectionless : 비연결성 클라이언트가 서버에 요청 → 그에 맞는 응답 보냄 → 연결 끊음. ( + HTTP 1.1 버전에서 keep - alive값으로 변경 가능 ) keep - alive : 연결 유지하고 재활용하는 기능이 Default. 상태 유지 ( Stateful ) HTTP의 Stateless 특징을 보완하는 방법. 쿠키 ( Cookie ) 웹사이트 접속 시 '사용자의 브라우저'에 저장되는 작은 텍스트 파일 ▶ 서버와 통신 시 HTTP 헤더에 포함됨. '키 + 값'으로 ..

Web 2023.08.05

[Spring] MVC 패턴과 MVC1, MVC2 및 Spring Framework에서의 MVC2 정리

MVC 패턴 소프트웨어 디자인 패턴 중 하나. M : Model : 어플리케이션 정보·데이터·DB 등 V : View : 사용자에게 보여지는 화면( UI ), 모델로부터 정보를 얻고 표시함. C : Controller : 데이터와 비즈니스 로직 사이의 상호 동작을 관리함 (▶ 모델과 뷰 통제 : MVC패턴에서 View와 Model이 직접적인 상호 소통하지 않도록 관리함) MVC 1 View와 Controller 모두 JSP가 담당 ▶ JSP 하나로 유저 요청 받고 응답(구현 쉬움) JSP 하나에서 MVC가 모두 이뤄지다보니 재사용성이 매우 떨어져 유지·보수 문제가 발생하며, 가독성이 나쁨. MVC 2 표준으로 사용됨. 요청을 하나의 컨트롤러(Servlet)가 먼저 받음 → View와 Controller의..

Web/SrpingBoot 2023.08.05
728x90