본문 바로가기

분류 전체보기

(87)
[Spring] [Error] 스프링 사용해서 테스트 할 때, 붙여줘야 하는 어노테이션 / 에러 내용 : Neither @ContextConfiguration nor @ContextHierarchy found for test class 스프링 테스트를 돌렸는데, 다음과 같은 에러가 발생했다. 스프링 빈 컨테이너가 생성될 때, 사용할 설정 파일을 지정해달라는 것이였다. 9월 24, 2022 10:52:47 오후 org.springframework.test.context.support.AbstractTestContextBootstrapper buildDefaultMergedContextConfiguration 정보: Neither @ContextConfiguration nor @ContextHierarchy found for test class [org.example.guestbookupgrade.dao.GuestbookDaoTest], using DelegatingSmartContextLoader 9월 24, 2022 10:52:47 오..
[Spring] [Test] [Error] 1. @ContextConfiguration에 들어갈 파라미터는? 2. @ComponentScan 범위의 중요성 / 에러내용 : org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourceHandlerMapping' defined.. @ContextConfiguration을 붙여주는 과정에서 에러가 생겼다. 9월 24, 2022 11:45:31 오후 org.springframework.context.support.AbstractApplicationContext refresh 경고: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourceHandlerMapping' defined in org.springframework.web.servlet.config.annotation.De..
[Spring] [Test] [Error] java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter 스프링 버전 차이 때문에 생긴 에러이다. 스프링 관련 예제를 스프링 4로 진행 중이였는데, test 코드 작성할 때 @ExtendWith(SpringExtension.class)의 SpringExtension.class가 없어서, 다음과 같이 스프링5의 의존성을 추가했었다. org.springframework spring-test 5.3.23 test 그리고 test를 돌려봤는데, 다음과 같은 에러가 발생했다. 스프링 버전의 문제였다. Test ignored. java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter org.springframework.util.ReflectionUtils$MethodFilter...
[Java] import static 특정 클래스 내의 정적 메서드 또는 변수를, 패키지명/클래스명 없이 접근 가능하도록 한 것. // import static 사용하지 않은 코드 int i = Math.abs(-3); //import static 사용한 코드 import static java.lang.Math.abs; int i = abs(-3);
[Java] [Servlet] web.xml의 모든 것 (1) ServletContainer는 web.xml에 기술되어있는 내용을 바탕으로 ServletContainer를 초기화 하게 됩니다. 따라서, 첫번째로는 ServletContainer에 Servlet 등록을 위해 사용합니다. 두번째로는 Spring이 제공하는 Spring IoC Container를 사용한다는 것을 명시하기 위해 사용합니다. 1. Servlet 등록하기 첫번째로, 서블릿을 서블릿 컨테이너에 등록하는 경우 사용합니다. 서블릿을 서블릿 컨테이너에 등록하고, URL과 매핑을 시켜주어야 하는데, 이것을 진행하는 곳입니다. 요즘은, 어노테이션으로 가능하지만, web.xml 설정 파일로 하는 것이 기본임을 알자. 서블릿 클래스를 등록하기 서블릿을 참조할 때 사용할 이름 등록할 서블릿 클래스의 Full N..
[DB] 트랜잭션의 모든 것 트랜잭션(Transaction)이란? 트랜잭션의 특징은 크게 4가지로 구분됩니다. 원자성 (Atomicity) 일관성 (Consistency) 독립성 (Isolation) 지속성 (Durability) 원자성 (Atomicity) 예를 들어 "출금"이라는 기능의 흐름이 다음과 같다고 생각해봅시다. 잔액이 얼마인지 조회한다. 출금하려는 금액이 잔액보다 작은지 검사한다. 출금하려는 금액이 잔액보다 작다면 (잔액 - 출금액)으로 수정한다. 언제, 어디서 출금했는지 정보를 기록한다. 사용자에게 출금한다. 위의 작업이 4번에서 오류가 발생했다면 어떻게 될까요? 4번에서 오류가 발생했다면, 앞의 작업을 모두 원래대로 복원을 시켜야 합니다. 이를 [rollback]이라고 합니다. 5번까지 모두 성공했을 때만 정보를 ..
[Spring] [SpringMVC] 스프링 설정 파일 분리하기 with ContextLoadListener, DispatcherServlet 설정의 분리 Spring 설정 파일을 프리젠테이션 레이어(컨트롤러 레이어)쪽과 나머지를 분리할 수 있습니다. 분리하는 이유는, 프레젠테이션 레이어 / 서비스 & 레포지토리 레이어를 분리하면 장점이 많기 때문에 설정 파일 자체도 아예 분리하여 작성하는 것입니다. 결론적으로, web.xml 파일에서 프리젠테이션 레이어에 대한 스프링 설정은 DispatcherServlet이 읽도록 하고, 그 외의 설정은 ContextLoaderListener를 통해서 읽도록 합니다. ContextLoaderListener를 활용하는 이유 DispatcherServlet을 경우에 따라서 2개 이상 설정할 수 있는데(사실 이런 경우는 별로 없음) 이 경우에는 각각의 DispathcerServlet의 ApplicationConte..
[Spring] [Spring MVC] 2. DispatchServlet의 동작 흐름 DispatcherServlet 프론트 컨트롤러 (Front Controller) 클라이언트의 모든 요청을 받은 후 이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아 사용자에게 응답 결과를 보여준다. DispathcerServlet은 여러 컴포넌트를 이용해 작업을 처리한다.
[Spring] [Spring MVC] 1. Spring MVC 개요 0. MVC란? MVC는 Model-View-Controller의 약자입니다. Model : 모델은 뷰가 렌더링하는데 필요한 데이터입니다. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당합니다. View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링을 합니다. 뷰는 JSP, JSF, PDF, XML등으로 결과를 표현합니다. Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트입니다. 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행합니다. 1. Spring MVC 모델 아키텍처 서블릿이 요청을 받고, Java Bean을 이용하여 모델을 만들고, JSP 페이지로 보여주는 형식 2. 발전된 형태의 Spring MVC 모델 아키텍처 1. ..
[Spring] [Spring JDBC] 6. Spring JDBC 실습 진행 4 - select(), delete() 1. RoleDaoSqls 에 쿼리문 추가하기 package org.example.dao; public class RoleDaoSqls { public static final String SELECT_ALL = "SELECT role_id, description FROM role ORDER BY role_id"; public static final String UPDATE = "UPDATE role SET description = :description where role_id = :roleId"; public static final String SELECT_BY_ROLE_ID = "SELECT role_id, description FROM role WHERE role_id = :roleId"; publ..