전체 글 (155) 썸네일형 리스트형 [SpringBoot] 2.4-5 디자인 패턴, REST API > Summary 디자인 패턴 : 반복되는 유사한 문제에 대한 해결법을 패턴화 한 것 REST API : REST 구조(URI, HTTP method, JSON)로 데이터를 교환할 수 있게 설계된 API 🔍 목차 02 개발에 앞서 알면 좋은 기초 지식 2.4 디자인 패턴 2.5 REST API 💡 2.4 디자인 패턴 애플리케이션 개발에서는 비슷한 문제들이 발생하고, 해결책도 유사한 경우가 많음 -> 패턴화 가능 디자인 패턴는 이런 '유사하면서 반복적으로 일어나는' 문제들을 해결하기 위해 고안된 해결책 상황에 맞는 최적의 디자인 패턴을 결정해서 사용하는 것이 바람직함 디자인 패턴은 우리가 자주 사용하는 라이브러리에도 다양하게 쓰이고 있음 📌 2.4.1 디자인 패턴의 종류 디자인 패턴의 대표적인 분류 방식 .. [SpringBoot] 컨트롤러를 테스트 하는 방법 - @WebMvcTest, @MockBean 컨트롤러 테스트 클래스 컨트롤러를 테스트 하기 위해서는 @WebMvcTest와 @MockBean를 사용할 수 있다. @WebMvcTest를 이용해서 컨트롤러를 띄울 수 있고, @MockBean을 통해서 가짜 빈 (이 자체로는 그냥 껍데기만 있는 빈)을 컨테이너에 등록할 수 있다. 추가로 테스트에 필요한 스프링 빈들은 (MockMvc나 ObjectMapper)은 @AutoWired로 주입받는다. 테스트 클래스안의 @Test 메소드 - given Mockito에서 제공하는 given( ) 메소드를 이용해서 mockBean을 설정해줄 수 있다. 예를들어, accountService라는 목빈을 @MockBean으로 선언한 상태에서, accountService의 acreateAccount가 리턴하는 값을 설정하고.. [SpringBoot] 2.1-3 스프링 부트 동작 방식, 레이어드 아키텍처 Summary : 효율을 위해 마이크로 아키텍처 구조를 가져야 하지만, 이를 위해선 서버간 통신이 필요 통신에서의 역할별로 계층을 나눈게 레이어드 아키텍처 🔍 목차 02 개발에 앞서 알면 좋은 기초 지식 2.1 서버 간 통신 2.2 스프링 부트의 동작 방식 2.3 레이어드 아키텍처 📌 2.1 서버 간 통신 단일 서비스 아키텍처 : 하나의 서비스 단위로 개발하는 것 장점 : 하나의 서비스에서 모든 자원을 공유하므로 원하는 자원에 쉽게 접근 가능 단점 1) 서비스의 규모가 크므로 시간이 오래 걸림 2) 한 부분이 고장 나면 전체가 다운될 수 있음 이러한 문제를 해결하기 위해 나온 것이 마이크로 서비스 아키텍처(MSA) 마이크로 서비스 아키텍처 : 서비스를 작게 나누어 개발하는 것 장점 1) 단일 모듈의 장애.. [SpringBoot] 1.2 스프링 프레임워크 vs. 스프링 부트 Summary : 스프링 부트는 스프링 프레임워크를 쉽게 쓸 수 있게 해준다. 🔍 목차 1.2 스프링 프레임워크 vs. 스프링 부트 1.2.1 의존성 관리 1.2.2 자동 설정 1.2.3 내장 WAS 1.2.4 모니터링 📌 1.2 스프링 프레임워크 vs. 스프링 부트 스프링 프레임워크는 다양한 기능을 제공하는 만큼 설정이 복잡함 이런 문제를 해결하기 위해 등장한 것이 바로 스프링 부트 스프링 부트는 스프링 프레임워크 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 사용할 수 있게 해줌 📌 1.2.1 의존성 관리 스프링 프레임워크에서는 모듈의 의존성을 직접 설정해야하고, 호환되는 버전을 맞춰야함 하지만 스프링 부트에서는 spring-boot-starter 라는 의존성이 자주 사용되는 라이브러리를 조.. [SpringBoot] 1.1 스프링 프레임워크 Summary : 스프링 프레임워크란, 개발자가 개발에만 집중할 수 있게 도와주는 자바 기반 프레임워크 🔍 목차 1.1 스프링 프레임워크 1.1.1 제어 역전(IoC) 1.1.2 의존성 주입(DI) 1.1.3 관점 지향 프로그래밍(AOP) 1.1.4 스프링 프레임워크의 다양한 모듈 💡 1.1 스프링 프레임워크 '전자정부 표준 프레임워크'의 기반 기술로 채택될 만큼 많이 사용하는 프레임워크 엔터프라이즈급 개발을 편리하게 만들어줌 (cf. 엔터프라이즈급 개발 : 기업 환경을 대상으로 하는 개발) 핵심 가치는 '어플리케이션 개발에 필요한 기반을 제공하여 개발자가 비지니스 로직 구현에만 집중할 수 있게 하는 것' 한마디로 자바로 어플리케이션을 개발하는데에 필요한 기능을 제공하는 도구 📌 1.1.1 제어 역전 (.. [Spring] 어노테이션으로 반복 코드를 줄여주는 Lombok(롬복) Lombok이란? Lombok은 여러가지 @어노테이션을 제공하고 이를 기반으로 반복 소스코드(boiler plate)를 컴파일 과정에서 생성 해주는 방식으로 동작하는 라이브러리이다. 즉, 코딩 과정에서 롭복과 관련된 어노테이션만 보이고 getter,setter 등의 생략되지만 실제로 컴파일된 결과물 .class 파일에는 코드가 생성되어 있다는 뜻이다. Lombok 어노테이션의 종류 @Getter, @Setter : Java Bean 규약에 있는 setter, getter를 생성 @ToString : Object에 기본 구현된 ToString 대신 객체의 값 보여주는 ToString을 생성 @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor.. [Spring] Handler와 Controller의 관계 Interceptor 인터셉터의 preHandle과 postHandle을 공부하다가 이런 의문이 들었다. 왜 이름이 pre'Handle'이지? Controller 전후로 있으니까 pre'Controller' 라고 해야하지 않나?🤔 이런 의문을 해소하고, 용어의 혼동을 없애기 위해 Handler와 Controller의 차이를 정리하고자 한다. Handler와 Controller의 관계 개념적으로 핸들러의 넓은 의미를 무언가를 다루는 것입니다. Spring MVC에서 컨트롤러의 경우 웹요청을 다루기 때문에 핸들러에 포함된다고 볼 수 있습니다. 그러나 모든 핸들러가 (웹 요청을 다루는) 컨트롤러인 것은 아닙니다. 예를 들어, Message를 다루는 MessageHandler가 있다면 이 핸들러는 컨트롤러가 아.. [자료구조] Queue 구현 컬렉션으로서의 큐 1. 큐는 인터페이스이고, 이를 구현하는 구현 클래스를 참조하게 업캐스팅하여 사용해야 한다. e.g. Queue queue = new LinkedList(); || Queue queue = ArrayDequeue(); 좌변과 우변의 타입이 일대일 대응(?)되는 형태의 컬렉션들은 모두 그 자체로 구현 클래스여서 그러하다. 하지만 큐는 그렇지 않으므로 LinkedList나 ArrayDequeu같은 구현 클래스를 통해서 사용할 수 있다. 2. 인덱스를 써야하는 상황에선 LinkedList를, 다른 경우은 ArrayDequeue가 더 성능이 좋다. 아래 자바 컬렉션 상속도를 보면 알겠지만, LinkedList는 Queue인터페이스와 Dequque 인터페이스를 모두 구현한다. 그리고 ArrayD.. 이전 1 2 3 4 5 6 7 8 ··· 20 다음