백엔드10 [Spring test] mockito, controller에서 null을 반환한다 컨트롤러 테스트 작성 중 이슈가 생겼다. Mock 객체를 생성하기 위해 Mockito 라이브러리를 활용하여 컨트롤러의 반환값을 지정해 주었다. 하지만 실제 테스트 결과에서는 반환값으로 지정한 객체가 들어있지 않고 null이 포함되어 있다. 이게 대체 무슨 일…?Expected to find an object with property ['accessToken'] in path $['data'] but found 'null'. This is not a json object according to the JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.com.jayway.jsonpath.PathNotFoundException: Expect.. 개발일기/Spring 2025. 3. 20. 22. 세션의 동작 과정 21. 세션과 쿠키의 차이점을 알아봤다. HTTP가 기본적으로 stateless하니 클라이언트의 정보를 저장하기 위해서 두 가지 전략이 생겨났고 클라이언트에 클라이언트의 상태를 저장하는 것을 쿠키, 서버가 클라이언트의 상태를 저장하는 것을 세션이라고 불렀다. 이번엔 세션의 동작 과정을 알아보자. 세션 생성사용자가 웹사이트를 방문하여 아이디, 비밀번호 등의 인증정보를 통해 사용자 정보를 확인받으면 서버는 그 사용자를 위한 새로운 세션을 생성한다. 이 때, 서버는 고유한 세션 ID를 생성하여 클라이언트에게 전달한다. 세션 ID는 일반적으로 쿠키를 통해 클라이언트에게 저장된다.세션 저장서버는 세션 ID를 키로 사용하여 세션 데이터를 서버 측 저장소에 저장한다. 세션 데이터에는 사용자의 로그인 상태, 장바구니 .. 백엔드 개발자라면 대답해야 할 100가지 질문 2024. 6. 27. 21. 세션과 쿠키의 차이점 Web 생태계에서 HTTP 프로토콜은 상태를 유지하지 않는다는 특성 때문에 사용자의 상태를 유지하기 위한 수단으로 오랜 기간 사용되었던 것은 세션과 쿠키이다. 사용자는 웹 애플리케이션을 사용하는 동안 정보를 계속 유지하거나 전달할 수 있다. 유사한 목적을 가지고 사용되는 세션과 쿠키가 어떤 차이점을 가지는 지 알아보자. 1. 저장 위치 세션은 서버 측에 데이터를 저장하는 기술이며, 주로 사용자의 상태를 유지하기 위해 세션 변수를 저장하는 데 활용된다. 사용자가 웹 페이지에 접속하면 서버는 해당 사용자에 대한 고유한 세션을 생성하고, 세션 변수에 정보를 저장하여 상태를 유지한다. 반면 쿠키는 클라이언트 측에 데이터를 저장하는 작은 텍스트 파일로, 사용자의 브라우저에 저장됩니다. 쿠키는 주로 사용자가 웹 사.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 12. 14. 20. JSP 기본 객체 JSP는 9개의 내장 객체를 기본으로 가지고 있다. 아래는 그 종류와 설명에 대한 나열이다. 기본 객체 실제 타입 설명 기본 객체 실제 타입 설명 request javax(jakarta).servlet.http.HttpServletRequest 클라이언트의 요청정보 저장 response javax.servlet.http.HttpServletResponse 응답정보 저장 pageContext javax.servlet.jsp.PageContext JSP 페이지의 정보 저장 session javax.servlet.http.HttpSession HTTP 세션 정보 저장 application javax.servlet.ServletContext 웹 애플리케이션 정보 저장 out javax.servlet.jspJsp.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 11. 19. Servlet과 JSP의 차이점 Servlet 서버에서 웹페이지를 동적으로 생성하거나 데이터 처리 수행을 위한 자바로 작성된 프로그램이다. servlet은 java 코드 안에 HTML 태그가 삽입된 자바 언어로 되어있다. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public ThreeParams extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); printWriter out = response... 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 10. 18. Deep Copy vs Shallow Copy 알고리즘을 공부하며 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy), 이 둘의 차이점을 뼈저리게 느낀 JAVA 사용자가 꽤 많을 것이라 생각한다. 따라서 백 마디 말보다 코드 몇 줄이 더 효과적일 것이라는 생각으로 아래와 같은 코드를 작성하였다. List list = new ArrayList(); list.add(1); List copyList = list; copyList.add(2); System.out.println(list); System.out.println(copyList); /** * list : [1, 2] * copyList : [1, 2] */ 위와 같이 주소 값을 복사하는 의미로 Shallow Copy, 실제 값을 복사하는 의미로 Deep Copy를 구분하여 사용한.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 10. 5. 16.데몬 스레드는 무엇인가요? 멀티태스킹 운영체제에서 Daemon이란 “사용자가 직접 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 수행하는 프로그램”을 의미한다. 일반적으로 윈도우의 서비스나 네트워크 서비스 등을 처리하는 프로그램으로 이해할 수 있다. 🤔여담으로 Daemon의 유래는 과거 MAC 개발자들이 맥스웰의 도깨비 사고 실험(보이지 않는 곳에서 스스로 분자를 골라내는 일을 하는 도깨비)에서 영감을 얻어 도깨비, 악마라는 뜻의 Daemon을 사용했고, 유닉스 시스템이 이 용어를 채용하면서 굳어졌다 한다. 자바의 데몬 스레드 자바의 데몬 스레드도 위 설명과 유사하게 제어 없이도 백그라운드에서 동작하며 애플리케이션(Normal Thread)을 보조하는 역할을 수행하는 스레드이다. JVM이 가질 수 있는 쓰레드의 종류는 크게 N.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 9. 1. 15. 스레드와 프로세스 프로세스 일반적으로 디스크에 존재하는 “프로그램”을 실행시켜서 동작하게 만들면 하나의 “프로세스”가 프로그램의 인스턴스로 메모리에 올라간다. 이때 여러 프로그램을 실행시키는 것은 멀티 프로세스라고 한다. 우리가 컴퓨터를 하는데 보통 워드, 크롬, 웹엑스 등 여러 프로그램을 동시에 실행하는 것이 바로 멀티 프로세스이다. 하나의 프로세스는 내부에 논리적인 저장 공간으로 Code, Data, Stack, Heap 등의 자원과 여러 개의 스레드로 구성될 수 있다. 스레드는 프로세스의 자원을 이용해서 실제로 작업을 수행하는 역할을 한다. 따라서 모든 프로세스에는 최소한 하나의 스레드가 존재한다. 자바 JVM(Java Virtual Machine)은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 진행하기 위.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 31. 14. JAVA 병렬과 동시성 자바의 멀티스레드 환경과 동시성 이슈를 알아보기 위하여 몇 가지 개념을 정리해보고자 한다. 동시성 이슈 어떤 두 사건이 같은 시간에 일어날 때 동일한 데이터를 조작하기 때문에 예상했던 결과가 달라질 수 있는 상황이다. 개발에서 주의해야 흔하게 발생할 수 있는 이슈 중 하나가 바로 동시성 이슈다. 동시성(Cocurrency) 여러 작업이 동시에 발생하는 것처럼 보이기 위해 번갈아 가면서(Context Switching) 작업을 수행하는 것이 동시성이다. 겉에서 보기엔 여러 작업이 동시에 실행되고 있는 것처럼 보이지만 실제로는 빠른 시간에 하나씩 번갈아가면서 처리하고 있다. 따라서 동시성은 구현도, 디버깅도 어렵다. 동시성의 목적은 자원의 유휴 시간을 최소화하는 것이다. 컴퓨터가 작동 가능한 상황에서도 아무.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 8. 30. 6. throw와 throws의 차이는 무엇인가요? 자바에서 프로그램이 비정상 종료하는 가장 대표적인 경우는 Error를 만나는 경우와 Exception을 만나는 경우이다. Exception을 만나는 경우 에러를 처리하는 복구 로직을 통해 프로그램의 비정상 종료를 막고 원활한 서비스를 돕는다. (물론 Exception Handling의 의미는 훨씬 깊고 넓다. 언급하지 않은 의미가 훨씬 많으니 “Exception”에 대해서는 따로 공부하자.) throw 예외를 고의로 발생시키는 역할을 한다. public class File { ... public File(String pathname) { if (pathname == null) { throw new NullPointerException(); // 예외 던지기 } this.path = fs.normalize.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 7. 25. 이전 1 다음