Spring

· Spring
클라이언트와 핸들러 - 클라이언트의 요청을 실제로 처리하는 것은 컨트롤러 - DispatcherServlet은 클라이언트의 요청을 전달받는 창구역할 - DispatcherServlet은 클라이언트의 요청을 처리할 컨트롤러를 찾기 위해 HandlerMapping을 사용 컨트롤러를 찾아주는 객체는 ControllerMapping 타입이어야 할 것 같은데 실제는 HandlerMapping 스프링 MVC는 웹 요청을 처리할 수 있는 범용 프레임워크 - @Controller 어노테이션을 붙인 클래스를 이용해서 클라이언트 요청을 처리할 수 있지만, - 자신이 직접 만든 클래스를 이용해서 클라이언트의 요청을 처리할 수 있다. DispatcherServlet 입장에서 클라이언트 요청을 처리하는 객체의 타입이 반드시 @..
· Spring
이번 포스팅에서는 스프링 MVC 핵심 구성요소에 대해 알아보겠습니다. 위 그림에서 이라고 표시한 것은 스프링 빈으로 등록해야 하는 것을 의미합니다. 그림에서 중앙에 위치한 DispatcherServlet은 모든 연결을 담당합니다. 1) 웹 브라우저 요청이 들어오면 DispatcherServlet은 모든 연결을 담당합니다. 2) 직접 컨트롤러를 검색하지 않고 HandlerMapping이라는 빈 객체에게 컨트롤러 검색을 요청합니다. HandlerMapping은 클라이언트의 요청 경로를 이용해서 이를 처리할 컨트롤러 빈 객체를 DispatcherServlet에 전달합니다. 웹 요청 경로가 "/hello" 라면 등록된 컨트롤러 빈 중에서 "/hello" 요청 경로를 처리할 컨트롤러를 리턴합니다. Dispatch..
· Spring
[Spring] 스프링 MVC - 컨트롤러 구현 해보기 이번 포스팅에서는 클라이언트의 요청을 알맞게 처리할 컨트롤러와 처리 결과를 보여줄 JSP 코드를 통해 실습해 보도록 하겠습니다. 컨트롤러 구현 package chap09; import org.springframework.stereotype.Contro muscleking3426.tistory.com 앞서 컨트롤러가 생성한 결과를 보여줄 뷰 코드를 만들어보겠습니다. 뷰 코드는 JSP를 이용해서 구현해 볼 것입니다. 경로 : /src/main/webapp/WEB-INF/view HelloController.java package chap09; import org.springframework.stereotype.Controller; import org.s..
· Spring
이번 포스팅에서는 클라이언트의 요청을 알맞게 처리할 컨트롤러와 처리 결과를 보여줄 JSP 코드를 통해 실습해 보도록 하겠습니다. 컨트롤러 구현 package chap09; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @GetMapping("/hello") public String hello(Model mode..
· Spring
스프링 MVC를 실행하는데 필요한 최소 설정 - 스프링 MVC의 주요 설정 (HandlerMapping, ViewResolver 등) - 스프링의 DispatcherServlet 설정 스프링 MVC 설정 package config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config...
· Spring
스프링 MVC를 이용해서 웹 애플리케이션 개발을 할 수 있는데, 이번 시간에는 스프링 MVC에 대해서 알아봅시다. 웹 어플리케이션 개발을 위한 메이븐/그레이들 프로젝트는 웹을 위한 디렉터리 구조가 추가됩니다. 프로젝트를 생성했다면 그 하위에는 아래와 같이 폴더를 생성해 줍니다. - src/main/java - src/main/webapp - src/main/webapp/WEB-INF - src/main/webapp/WEB-INF/view webapp 폴더는 HTML, CSS, JS, JSP 등 웹 애플리케이션을 구현하는데 필요한 코드가 위치합니다. WEB-INF에는 web.xml 파일이 위치합니다. 서블릿 스펙에 따르면 WEB-INF 폴더의 하위 폴더로 lib 폴더와 classes 폴더를 생성하고 각각의..
· Spring
이번 시간에는 @EnableTransactionManagement 애노테이션에이 제공하는 속성에 대해 알아봅시다. @EnableTransactionManagement 애노테이션의 속성 속성 설명 proxyTargetClass 클래스를 이용해서 프록시를 생성할지 여부를 지정한다. 기본값은 false로서 인터페이스를 이용해서 프록시를 생성한다. order AOP 적용 순서를 지정한다. 기본값은 가장 낮은 우선순위에 해당하는 int의 최댓값이다. 트랜잭션 전파 public class SomeService{ private AnyService anyService; @Transactional public void some(){ anyService.any(); } public void setAnyService(Any..
· Spring
@Transactional 애노테이션의 주요 속성을 알아봅시다. 속성 타입 설명 value String 트랜잭션을 관리할 때 사용할 PlatformTransactionManager 빈의 이름을 지정합니다. 기본값 : "" propagation Propagation 트랜잭션 전파 타입을 지정합니다. 기본값 : Propagation.REQUIRED isolation Isolation 트랜잭션 격리 레벨을 지정합니다. 기본값 : ISolation.DEFAULT timeout int 트랜잭션 제한 시간을 지정합니다. 기본값은 -1로 이 경우 데이터베이스의 타임아웃 시간을 사용합니다. 초 단위 지정 * Propagation과 Isolation 열거 타입은 org.springframework.transaction...
· Spring
[Spring] @Transacational과 프록시 스프링은 @Transactional 애노테이션을 이용해서 트랜잭션을 처리하기 위해 내부적으로 AOP를 사용합니다. 실제로 @Transactional 애노테이션을 적용하기 위해 @EnableTransaction Management 태그를 사용하면 스 muscleking3426.tistory.com 이전 포스팅에 이어 작성하겠습니다. @Transactional 적용 메서드의 롤백 처리 커밋을 수행하는 주체가 프록시 객체였던 것처럼 롤백을 처리하는 주체 또한 프록시 객체입니다. try { cps.changePassword("madvirus@madvirus.net", "3333", "1111"); System.out.println("암호 변경"); } cat..
· Spring
스프링은 @Transactional 애노테이션을 이용해서 트랜잭션을 처리하기 위해 내부적으로 AOP를 사용합니다. 실제로 @Transactional 애노테이션을 적용하기 위해 @EnableTransaction Management 태그를 사용하면 스프링은 @Transactional 애노테이션이 적용된 빈 객체를 찾아서 알맞은 프록시 객체를 생성합니다. ChangePasswordService package spring; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; public class ChangePasswordService ..