스프링(6)
-
스프링 컨테이너(Spring Container) 및 설정 파일
스프링 프레임워크의 동작 원리를 알기 위해서는 스프링 프레임워크 설정 파일들에 대한 이해가 필요하다. 스프링 프레임워크에 대해 알아보기 전에 서블릿 컨테이너에 대한 사전 이해가 있어야지 해당 내용을 이해하는 데 수월하다. 서블릿 컨테이너 관련된 포스팅을 참조하길 바란다. 이번 포스팅은 스프링 프레임워크 동작 원리를 이해하기 위한 스프링 설정 파일에 대한 포스팅이다. 우선 스프링 설정 파일의 가장 기본이 되는 파일은 web.xml, servlet-context.xml, applicationContext.xml 이다. web.xml (배포서술자) web.xml은 배포 서술자라고 하며 WAS(톰켓) 가동시 WEB-INF 하위에 있는 web.xml을 읽고, 웹 어플리케이션 설정을 구성한다. 스프링 프레임워크를 ..
2022.02.07 -
서블릿 컨테이너(Servlet Container) 요청 처리 과정
1) 사용자 요청이 들어오면 정적파일은 웹서버에서 처리한다. 동적파일이 필요한 경우 웹서버는 WAS 즉, 서블릿 컨테이너로 request를 보낸다. (Servlet Container or Web Container or WAS라고 한다) 2) 요청을 받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다. 그리고 배치 서술자인 web.xml 또는 어노테이션을 통해서 요청한 URL에 맞는 서블릿을 찾는다. (MVC패턴에서 서블릿은 Controller이다) 3) 요청된 서블릿이 이전에 요청된 적이 없다면 해당 서블릿 객체를 생성하고 해당 서블릿의 init() 메소드를 호출하고 메모리에 로드시킨다. 만약, 이전에 생성한 적이 있다면 객체..
2022.02.03 -
[Spring StackOverflow Error] Spring xml방식 객체 주입시 스택 오버플로우 에러
에러메시지 : javax.servlet.ServletException: java.lang.StackOverflowError 스프링에서 Scope를 Requst로 설정해둔 빈객체를 xml방식으로 주입 받아서 사용할 경우 발생했던 에러이다. 위의 사진은 root-context.xml로 빈객체를 등록해서 사용하는 역할을 한다. DataBean1과 DataBean2 두 빈객체를 등록해두고 Scope는 request로 설정해 두었다. DataBean2의 경우에는 id 값을 지정해주었는데 xml 방식에서는 특이하게 root-context.xml에서 빈객체를 id값을 설정해서 등록해 두면 request 영역에 자동으로 저장된다. 컨트롤러에 @Resource 어노테이션을 통해 id로 지정한 name 값으로 객체를 주입..
2021.10.21 -
[Spring 어노테이션 에러] @JoinPoint, @Aspect import 에러
Spring AOP설정을 위해 어노테이션으로 @JoinPoin와 @Aspect를 사용한다. 해당 어노테이션을 사용하기 위해서 mvn Repository에서 AspectJ Weaver를 dependency설정을 해준다. org.aspectj aspectjweaver 1.9.4 runtime 하지만, pom.xml에 디펜던시를 설정해줘도 @JoinPoint와 @Aspect가 임포트 자동완성이 생기지 않는다. 해결 방법은 간단하다. aspectjweaver뿐만 아니라 aspectjrt도 pom.xml에 의존설정 해줘야 한다. org.aspectj aspectjrt 1.9.4 위의 dependency를 pom.xml 설정해주면 @JoinPoint와 @Aspect 임포트 자동완성이 된다.
2021.10.07 -
[React Spring boot 연동 에러] org.springframework.web.HttpMediaTypeNotAcceptableExce
리액트와 스프링 부트를 이용하여 클라이언트와 서버간의 데이터 통신을 구현을 시도하였다. IDE는 리액트는 vsCode를 사용하였고, 스프링은 InteliJ를 사용하였다. 라이브러리 관리 도구로는 gradle을 사용하였다. 클라이언트와 서버의 데이터 통신을 위해 기본 셋팅을 하고 실행하였지만 결과는 org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation 에러.. 해당 에러가 발생한 과정과 해결한 과정을 기록해둔다. 1. 리액트 설정 2. 스프링 설정 3. 실행 먼저 스프링으로 서버를 켜준다음 리액트를 실행하였다. 하지만 결과를 출력하지 못하고 있다.... 뭐가 문제일까 4. 에러 ..
2021.08.06 -
[JSP/Servlet 개념정리] POJO를 사용하는 이유가 뭘까
POJO에 대한 의문 JSP/Servlet을 통한 CRUD기능 구현을 하던 중에 POJO라는 개념을 접하게 됐다. 해당 개념을 접하고 처음 든 생각이 그저 코드를 깔끔하게 하기 위해서 사용하는 건가?라는 의문이 생겼다. 일반적으로 서블릿을 사용할 때 어노테이션을 통해 이용한다. 기본적인 MVC2모델에서 CRUD를 기능 구현을 위해서 컨트롤러로 진입하기 위해 어노테이션을 사용했다. 근데 밑에 코드를 보면 Controller라는 인터페이스를 생성하여 이를 다른 컨트롤러 클래스에 구현하는 방식을 사용하고 있다. 이와 같은 방식을 POJO라는 개념을 이용한 것이라고 한다. 이는 일반적으로 MVC2모델에서 사용하는 방식과는 좀 다른 양식을 보이고 있다. POJO의 기원 POJO에 대해서 좀 알아보자면, POJO는..
2021.07.20