스프링) RestClient
·
자바 탐구
RestClient REST API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리 client - Frontend, Frontend - Backend 뿐만이 아니라, Backend A - Backend B 사이에도 Backend A가 Backend B의 리소스를 사용할 수 있다. 클라이언트와 서버의 관계는 상대적이기 때문에 Frontend - Backend의 관계에서는 Frontend가 클라이언트가 되고, Backend - Backend 관계에서는 리소스를 요청하는 쪽이 클라이언트가 된다. UI가 갖춰진 RestClinet로는 Postman, Thunder Client, Insomnia, Soap UI 등이 있다. SpringFramework에서는 REST엔드포인트에 대한 호출을 수..
자바) List, Set, Map, HashMap의 특성
·
자바 탐구
List, Set, Map, HashMap의 특성 List 순서가 있는 데이터의 집합으로 중복값을 허용한다. 데이터를 인덱스로 접근 가능. 인덱스는 0부터 시작하여 데이터의 순서를 의미한다. 대표적인 구현 클래스로 'ArrayList'와 'LinkedList'가 있다. Set 순서가 없는 데이터의 집합으로, 중복된 값을 허용하지 않는다. 데이터를 추가할 때 중복된 값이 이미 존재하는 경우 추가되지 않는다. 대표적인 구현 클래스로 'HashSet'과 'TreeSet'이 있다. Map key-value 쌍의 데이터를 저장하는 자료구조이다. key는 고유해야 하며, key를 통해 value에 접근할 수 있다. Map은 key의 순서를 보장하지 않는다. 대표적인 구현 클래스로 'HashMap', 'TreeMap..
스프링) 스프링 컨테이너(Spring Container)
·
자바 탐구
스프링 컨테이너 스프링 프레임워크의 핵심 기능 중 하나로, 스프링 애플리케이션에서 객체의 생성, 관리, 의존성 주입(Dependecy Injection), 라이프사이클 관리 등을 담당하는 컴포넌트이다. 스프링 컨테이너는 빈(Bean)이라고 불리는 객체들을 관리한다. 빈은 스프링 컨테이너에 의해 생성되고, 컨테이너 안에서 싱글톤으로 관리된다. 싱글톤은 여러 요청이나 호출에 대해 동일한 인스턴스를 유지하는 디자인 패턴을 의미한다. 스프링 컨테이너는 XML, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 부트(Spring Boot)를 사용하기 전에는 XML을 통해 직접적으로 설정해 주어야 했지만, 스프링 부트가 등장하면서 대부분 사용하지 않게 되었다. 스프링 컨테이너의 장점 1. 의존성 주입 스..
스프링) 의존성 주입(Dependency Injection) 방식
·
자바 탐구
의존성 주입 방식 의존성을 주입하는 방법은 4가지가 있다. 1. 생성자 주입(Constructor Injection) 2. setter 3. 필드 주입 생성자 주입 생성자를 통해 의존관계를 주입하는 방법이다. @RestController public class AnimalController { private final AnimalService animalService; @Autowired public AnimalController (AnimalService animalService) { this.animalService = animalService; } @PostMapping("/animal") public ResponseEntity adoptAnAnimal(AdoptRequestDto requestDt..
JPA) 영속성 컨텍스트
·
자바 탐구
영속성 콘텍스트 엔티티를 영구 저장하는 환경이라는 의미 애플리케이션과 데이터베이스사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 매니저는 영속성 콘텍스트에 엔티티를 보관하고 관리한다. 엔티티의 생명주기 비영속(new/transit) : 영속성 콘텍스트와 전혀 관계가 없는 상태 Product product = new Product(); product.setId("product1"); product.setName("책"); 객체를 생성하였지만 저장은 되지 않음 영속(managed) : 영속성 콘텍스트에 저장된 상태 Product product = new Product(); product.setId("product1"); product.setN..
컴퓨터) Spring MVC 에서의 예외 처리 기법
·
컴퓨터 탐구
Spring MVC에서의 예외 처리 기법 기본적인 SpringBoot 예외 처리 방식 WAS(톰캣) ➜ 필터 ➜ 서블릿(디스패처 서블릿) ➜ 인터셉터 ➜ 컨트롤러 ➜ 컨트롤러(예외발생) ➜ 인터셉터 ➜ 서블릿(디스패처 서블릿) ➜ 필터 ➜ WAS(톰캣) ➜ WAS(톰캣) ➜ 필터 ➜ 서블릿(디스패처 서블릿) ➜ 인터셉터 ➜ 컨트롤러(BasicErrorController) WAS(톰캣) ➜ 필터 ✔ 클라이언트의 요청이 웹 애플리케이션서버(WAS)로 도착하면 먼저 등록된 필터들이 요청을 가로챔 필터 ➜ 서블릿(디스패처 서블릿) ✔ 필터가 요청을 처리한 후, 해당 요청을 서블릿으로 전달 ➜ 디스패처 서블릿은 요청을 적절한 컨트롤러로 라우팅 하고, 컨트롤러에서 비즈니스 로직을 처리 서블릿(디스패처 서블릿) ➜ ..
컴퓨터) REST API
·
컴퓨터 탐구
REST API REST (Representational State Transfer) 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식 자원(Resouce)과 자원에 대한 상태(State)를 주고받기 위한 아키텍처의 제약조건 REST 디자인 원칙 API는 하나의 애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스 할 수 있게 해주는 메커니즘이다. 균일한 인터페이스 ✔ 요청이 어디에서 오는지와 무관하게, 동일한 리소스에 대한 모든 API 요청은 동일하여야 한다. ➜ 어느 요청이든지 일관성이 있어야함 ✔ 각 자원은 각각의 고유한 URI(Uniform Resource Idenfier)에 속함이 보장되어야 한다. ➜ ex) /post/1 /post/2 ..
백준) (자바) 2750 수 정렬하기 1 (버블 정렬로 풀어보기)
·
알고리즘 탐구
수 정렬하기 1 수 정렬하기 1 - 백준 - 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net n개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력하는 문제이다. 자바에는 sort로 손쉽게 풀 수 있다. 하지만 버블정렬(BubbleSort) 방법으로 풀어보고자 한다. Bubble Sort : 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 원소의 이동이 거품이 수면위로 올라가 듯한 모습으로 보여 붙여진 이름이다. 버블 정렬은 두 인접한 데이터의 크기를 비교해서 정렬하는 방법이다. 시간복..
오지랖 토끼
알고자 하는 것에 대한 오지랖