Web/Spring12 @Transactional 스프링에서는 @Transactional을 통해 트랜잭션을 관리할 수 있게 해줍니다. @Transactional의 propagation 옵션 값을 지정함으로써 트랜잭션 전파 레벨을 설정할 수 있는데요, 해당 옵션에서 지원하는 트랜잭션 전파 레벨에는 무엇이 있고, 각 전파 레벨은 어떻게 트랜잭션을 진행하는지 알아보겠습니다! 📌 @Transactional @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Transactional { ... Propagation propagation() default Propagation.REQUIRED; .. 2022. 8. 11. 데이터베이스 연동 시 유의 사항 개인 프로젝트를 진행하며 데이터베이스를 연동하던 중 겪은 문제를 바탕으로 짧게 글을 쓰고자 한다. 정말 짧으니 주의 1. pom.xml에 dependency를 추가했음에도 데이터베이스 연결이 되지 않는 경우 이 경우, dependencies에 추가한 DB dependency 버전과 로컬 및 서버에서 사용하고자 하는 DB의 버전을 맞춰줘야 한다. 2. java.sql.SQLSyntaxErrorException: Unknown database [DB명] 로그에서 볼 수 있듯이 데이터베이스명을 잘못 등록한 경우 발생하는 예외이다. 나의 경우, spring-master로 DB를 생성했으나 실제 DB명은 spring_master로 생성되어 있음을 알 수 있었다. DB명을 파악하는 방법은 다음과 같다. (MySQL.. 2021. 6. 21. [Spring 설정] WebMvcConfigurer 커스텀 설정 1. @EnableWebMvc, WebMvcConfigurer @EnableWebMvc 어노테이션을 이용해 MVC 설정을 하는 경우, 일반적으로 WebMvcConfigurer 인터페이스를 상속받은 @Configuration 클래스를 구현한다(MVC 설정을 하나의 클래스에서 모을 수 있기 때문). WebMvcConfigurer 인터페이스는 10개가 넘는 메서드를 정의하고 있으며, 이를 모두 구현해서 사용하는 경우는 드물다. 따라서, WebMvcConfigurer 인터페이스를 구현하고 있는 WebMvcConfigurerAdapter 클래스를 상속받아 필요한 메서드만 구현하는 것이 일반적이다. @EnableWebMvc 클래스와 WebMvcConfigurer 구현 클래스를 따로 구현할 수 있다. 2. View .. 2021. 5. 19. Exception 처리 컨트롤러에서 메소드를 실행하는 과정에서 Exception이 발생한다면 어떻게 될까? 아마도 에러 메시지를 담은 전형적인 에러 화면을 보여주게 될 것이다. 하지만 실제 서비스를 제공한다면, 이러한 화면을 사용자에게 제공해서는 안 될 것이다. 따라서, 오늘은 스프링에서 Exception이 발생한 경우 이를 처리하는 방법에 대해 알아보고자 한다. Spring에서는 에러 처리와 관련해 크게 3가지의 방법을 제공하고 있다. 1. @ExceptionHandler 어노테이션을 사용한 Exception 처리 2. @ControllerAdvice 어노테이션을 사용한 공통 Exception 처리 3. @ResponseStatus 어노테이션을 사용한 Exception 처리 1. @ExceptionHandler을 사용한 Ex.. 2021. 5. 18. [Spring 설정] 컨트롤러 경로 매핑과 디폴트 서블릿 설정 1. 서블릿 매핑에 따른 컨트롤러 매핑 및 디폴트 서블릿 설정 사진 1에서처럼 servlet-mapping의 url-pattern을 설정해주면 해당 경로로 들어오는 요청에 대해서 서블릿을 매핑해준다는 것을 의미한다. url-pattern은 여러 개를 등록할 수 있다. 위 사진과 같이 url-pattern을 '/' 으로 설정하게 되면 jsp 요청을 제외한 나머지 모든 요청을 DispatcherServlet이 받게 된다. http://localhost:8080/springMaster/user/list http://localhost:8080/springMaster/bootstrap/bootstrap.css 이 두개의 요청은 모두 DispatcherServlet이 받게 된다. /user/list 경로에 대한 컨.. 2021. 5. 17. [Spring 설정] 스프링 MVC 다음에서 설명하는 설정들은 dispatcher 서블릿 설정 파일에서 설정해준다. 스프링 MVC를 설정하기 위해서는 최소한 다음 구성 요소를 빈 객체로 등록해줘야 한다. 1. HandlerMapping 구현 객체 2. HandlerAdapter 구현 객체 3. ViewResolver 구현 객체 이 중 1번과 2번인 HandlerMapping, HandlerAdapter는 태그를 이용하면 설정이 끝난다. 그러므로 3번 ViewResolver만 설정해주면 된다. 태그는 RequestMappingHandlerMapping과 RequestMappingHandlerAdapter 클래스를 빈으로 등록해준다. 이 두 클래스는 @Controller 클래스를 컨트롤러로 사용할 수 있도록 해준다. InternalResour.. 2021. 5. 9. [Spring 설정] DispatcherServlet 1-1. XML 설정 DispatcherServlet은 내부적으로 스프링 컨테이너를 생성한다. 따로 초기화를 해주지 않으면 웹 어플리케이션의 /WEB-INF/ 디렉터리에 위치한 [서블릿 이름]_servlet.xml 파일을 스프링 설정 파일로 사용한다. 한 개 이상의 설정 파일을 사용해야 하거나 설정 파일 이름이 [서블릿 이름]_servlet.xml 형식이 아닌 경우, contextConfigLocation 초기화 파라미터로 설정 파일을 지정하면 된다. contextConfigLocation 의 초기화 파라미터인 설정 파일은 콤마, 공백, 탭, 줄 바꿈, 세미콜론을 이용해 구분한다. 각 설정 파일의 경로는 웹 어플리케이션의 루트 디렉토리를 기준으로 한다. "file:"이나 "classpath:" 접두어를 .. 2021. 5. 9. 시작 페이지 설정하기! 스프링 프로젝트를 생성해 서버까지 구동했지만, 도저히 "localhost:8080" 으로 접속해도 프로젝트 메인화면으로 갈 수가 없다면...! 아래 순서대로 진행해보시면 됩니다! 1. [사진 1.2] 에서와 같이 web.xml 파일에 welcome-file-list를 설정해줘야 합니다. welcome-file-list는 Document Root를 기준으로 파일을 탐색하게 됩니다. 저의 프로젝트 경우, [사진 1.1] 과 같이 구조를 이루고 있습니다. 즉, Document Root는 src/main/webapp이 됩니다. 저는 /WEB-INF/view 에 위치한 hello.jsp 파일을 시작 페이지로 설정하고자 했으며, [사진 1.2] 에서 4번째 welcome-file에 해당 파일의 경로를 정확하게 기재.. 2021. 4. 28. Spring MVC의 동작 원리 Spring MVC의 기본 동작 흐름 [Web Browser → DispatcherServlet]: request 요청 [HandlerMapping]: 요청 URL을 어떤 Controller가 처리할지 결정 [DispatcherServlet → HandlerAdapter]: 처리 요청 [HandlerAdapter → Controller]: 처리 요청을 변환해 전달, [Controller]: 요청 실행 [Controller → HandlerAdapter]: 실행에 따른 결과 반환 [HandlerAdapter → DispatcherServlet]: Controller 에서의 실행 결과를 ModelAndView로 변환해 리턴 [ViewResolver]: 실행 결과를 보여줄 View 검색 [DispatcherS.. 2021. 4. 19. 이전 1 2 다음