728x90
반응형

스프링 14

[스프링의 이해와 원리] 2.2 테스트

▶ 스프링의 테스트 적용 지난 게시글에서 정리했듯이, JUnit은 독립적인 테스트를 지원하기 위해 매 번 새로운 애플리케이션 컨텍스트 오브젝트를 만들게 했다. 따라서 @Before 메소드가 테스트 메소드 개수만큼 반복되기 때문에 애플리케이션 컨텍스트도 그 개수만큼 생성된다. 설정도 간단하고 빈도 몇 개 없는 경우에는 별 문제가 되지 않지만, 빈이 많아지고 복잡해지면 애플리케이션 컨텍스트 생성에 적지 않은 시간이 걸릴 수 있다. 애플리케이션 컨텍스트가 만들어질 때는 모든 싱글톤 빈 프로젝트를 초기화한다. 어떤 빈은 오브젝트가 생성될 때 자체적인 초기화 작업을 진행해서 제법 많은 시간을 필요로 할 수 있다. 또, 애플리케이션 컨텍스트가 초기화될 때 어떤 빈은 독자적으로 많은 리소스를 할당하거나 독립적인 스레..

[오픈소스 소프트웨어 프로젝트] 2. Stomp Protocol 기반 웹 소켓 채팅방 구현

https://wonsjung.tistory.com/463 [2022년 2학기] 오픈소스 소프트웨어 프로젝트 2022년도 2학기 교내 수업으로 오픈소스 소프트웨어 프로젝트 수업을 수강하였다. 하나의 주제를 정해 한 학기 동안 팀 프로젝트를 진행하는 수업이었다. 비록 성적은 30명 중 30등을 하였지만 얻 wonsjung.tistory.com 위 게시글에서 소개했듯이 오픈소스 소프트웨어 프로젝트로 진행했던 프로젝트 중 Stomp Protocol 기반 웹 소켓 채팅방 구현에 대해 정리하고자 한다. https://wonsjung.tistory.com/403 [Protocol] STOMP Protocol 기본적으로 채팅 서비스를 구현하기 위해서는 Half Duplex 방식의 HTTP보다 Full Duplex 방..

2022/2022-2 2023.01.11

[SpringBoot] SpringBoot + SpringSecurity + JWT + Redis (회원가입 / 로그인 구현) (2)

https://wonsjung.tistory.com/453 [SpringBoot] SpringBoot + SpringSecurity + JWT (회원가입 / 로그인 구현) 본 프로젝트를 진행할 때 처음에는 SpringSecurity + Oauth2를 이용한 로그인을 구현하려 했으나 방향성이 바뀌어 일반적인 사용자 정보를 입력한 회원가입 + 로그인을 구현하게 되었다. 회원가입 및 wonsjung.tistory.com 위 게시글은 지난 게시글로 Spring Security로 JWT를 발급하는 과정까지만 작성했었다. 오늘 작성하는 현재의 글은 Access Token의 만료 시간이 다 되었을 경우 Refresh Token이 유효한지 검사하고 유효하다면 Access Token을 재발급하는 과정이다. 또한, 전 게..

2022/2022-1 2022.08.18

HTTP 요청 파라미터 - 쿼리 파라미터, HTML form

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용. GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 ex) 검색, 필터, 페이징 등에서 많이 사용하는 방식 POST - HTML Form content-type:application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20 ex) 회원 가입, 상품 주문, HTML form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JS..

Spring/MVC 2022.07.07

[웹 애플리케이션 이해] - HTML, HTTP API, CSR, SSR

백엔드를 공부할 때 꼭 알아야하는 지식들이다. 1. 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹 브라우저 웹 서버에서 이미 생성되어있는 리소스 파일을 웹 브라우저에게 전달하는 방식이다. 2. HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹 브라우저 : HTML 해석 WAS에서 DB를 조회한 후 동적으로 HTML을 생성한다. HTML을 생성할 때는 JSP, 타임리프를 이용한 후 생성된 HTML을 웹 브라우저에게 제공한다. 3. HTTP API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 다양한 시스템에서 호출 WAS에서 DB를 조회한 후 HTML을 생성하는 것이 아닌 조회한 데이터를 바로 웹 브라우저에게 정해진 형식으로 전달한다. 데이..

Spring/MVC 2022.07.03

[웹 애플리케이션 이해] 동시 요청 - 멀티 쓰레드

멀티 쓰레드가 무엇인지 알아보기 전에, 쓰레드가 무엇인지부터 알아야한다. 쓰레드 애플리케이션 코드를 하나 하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한 번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 단일 요청의 경우 - 쓰레드 하나 사용할 때 (에러 X) 쓰레드 하나 사용할 때 클라이언트로부터 아무런 요청이 없다. 쓰레드는 아무 것도 수행하지 않고 휴식 중이다. 그 때, 클라이언트로부터 요청1이 발생하였고, WAS에서는 휴식 중이던 쓰레드가 클라이언트의 요청과 연결되어 할당된다. 그리고 이는 servlet을 호출한다. 위 과정은 쓰레드가 하나 존재할 때, 클..

Spring/MVC 2022.07.03

[웹 애플리케이션 이해] 서블릿

서블릿이란? 자바 웹 서버로 웹 페이지를 제공할 때, 동적인 데이터를 제공하는 것을 돕는 기술이다. 이를 그림을 통해 보면, 클라이언트 측에서 데이터를 POST Method(회원 저장)로 서버에게 전송하였다. HTTP 프로토콜을 기반으로 데이터를 전송하였기 때문에 HTTP 메시지가 생성되고 서버는 이를 받게 된다. 그럼 서버는 이를 데이터 형식에 맞게 가져온 후 응답 메시지를 생성한 후 다시 클라이언트에게 전송해주어야한다. 이를 순차적인 과정으로 확인해보면 왼쪽 과정을 진행하여 HTTP 메시지에 담긴 정보를 바탕으로 회원을 저장한 후, 응답 메시지를 생성한 후 다시 보낸다. 하지만 의미있는 비지니스 로직은 데이터베이스에 저장 요청을 하는 과정 밖에 존재하지 않고, 나머지는 서버 연결, HTTP 메시지 읽..

Spring/MVC 2022.07.03

[웹 애플리케이션 이해] 웹 서버, 웹 애플리케이션 서버

우선, 웹은 HTTP 프로토콜을 기반으로 동작한다. HTTP 메시지에 모든 것을 전송할 수 있다. HTML, TEXT Image, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버 간 데이터를 주고 받을 때도 대부분 HTTP 사용 그렇다면 웹 서버는 무엇이고 웹 애플리케이션 서버는 무엇일까? 웹 서버 (Web Server) HTTP 기반으로 동작하는 서버 주로 정적 리소스 제공, 기타 부가 기능 존재 정적(파일) HTML, CSS, JS, 이미지, 영상 ex) NGINX, APACHE 웹 애플리케이션 서버 (WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 + (동적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케..

Spring/MVC 2022.07.03

API 개발 : 컬렉션 조회

전에 했던 API 개발은 xToOne관계였다. 컬렉션이 아닌 단순한 형태의 조회였다. 이번에는 xToOne이 아닌 xToMany관계처럼 컬렉션 형태를 조회하는 것을 알아본다. 주문 내역에서 추가로 주문한 상품 정보를 조회한다. 하나의 주문에 상품은 여러 개가 있을 수 있으므로 xToMany형태의 컬렉션 조회가 될 것이다. 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 작성 조건 : API 반환으로 원하는 조건은 { 주문 번호, 사용자 이름, 주문 날짜, 주문 상태, 배송지 정보, 주문한 상품 정보} 이다. 이 스펙에 맞춰 DTO를 개발해야한다. @RestController @Requ..

Spring/API 2022.06.28

API 개발 : 간단한 주문 조회 (지연 로딩)

이번 게시글은 지난 게시글과는 달리 회원이 아닌 주문을 조회한다고 가정했을 경우이다. 조회이기 때문에 REST API : GET Method는 동일하다. 이번 간단한 주문 조회의 가정은 컬렉션 조회가 아닌 xToOne 관계 조회이다. 주문과 연관 되어 있는 관계 들 중 xToOne으로 관계가 맺어져 있는 회원, 배송정보를 가져올 것이다. 회원 조회가 아닌 주문 조회 REST API : GET Method 적용 주문과 xToOne관계로 맺어져 있는 정보를 조회할 것 즉, 컬렉션 조회가 아님 주문과 연관되어있는 회원, 배송정보를 조회할 것 지금까지 게시글로 원하는 API 반환을 위해서는 API 스펙에 맞춰 DTO 클래스를 설계하여 반환해야한다는 것을 알고 있다는 가정 하, DTO로 변환하여 반환하는 코드로 ..

Spring/API 2022.06.26
728x90
반응형