Spring

Spring MVC2 .xml 설정 어노테이션으로 변경

Clearing 2022. 9. 22. 09:52
728x90

@ 설정을 위해서는 스프링 컨테이너가 내가 설정한 패키지 범위를 scan 할 수 있도록

context 네임스페이스를 추가해야 한다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

	<context:component-scan base-package="com.kim.biz.controller" />
    // 스캔할 범위를 설정해 주어야 한다.

 

@Component() 진행 시 DAO류는 @Repository 서비스류는 @Service 서비스류와 같이 진행하였다.

컨트롤러류도 마찬가지로 @Controller로 객체화를 진행한다.

@Controller는 DS가 인식하는 C 객체로 설정해주며 더 이상 implements가 필요 없어 오버 라이딩 강제가 필요 없다.

완전한 POJO가 되었기 때문에 메서드 시그니쳐의 변경 또한 가능하다.

 

기존 오버 라이딩 시

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception

 

변경 후

ex) public void selectOneMember(HttpServletRequest request) 내가 설정 가능

 

@Controller로 객체화 이후 사용될 메서드에게 @RequestMapping("사용자의 요청정보")를 통해

어떤 사용자의 [요청]에 대해서 무슨 [메서드]를 수행해야 하는지 "연결"해 주어야 한다.

HandlerMapping의 역할을 수행해주며 하나의 C 클래스 내부에 여러 개의 메서드를 정의할 수 있다.

 

매핑을 완료했다면 Command 객체가 사용 가능하며 스프링 컨테이너가 Command 객체를 생성하고

사용자가 입력한 값들을 setter 주입으로 Command 객체에 세팅해준다.

 

변경 전

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		BoardVO bVO=new BoardVO();
		bVO.setBid(Integer.parseInt(request.getParameter("bid")));
		
		BoardDAO bDAO=new BoardDAO();
		bVO=bDAO.selectOneBoard(bVO);

		
		ModelAndView mav = new ModelAndView(); 
		mav.addObject("data", bVO);
		mav.setViewName("board.jsp");
		
		
		return mav;
	}

 

변경 후

	@RequestMapping("/board.do")
	public ModelAndView selectOneBoard(BoardVO bVO,BoardDAO bDAO,ModelAndView mav) {
		
		bVO=bDAO.selectOneBoard(bVO);
		mav.addObject("data", bVO);
		mav.setViewName("board.jsp");

		return mav;

	}

 

728x90

'Spring' 카테고리의 다른 글

2-Layered 아키텍처  (0) 2022.09.26
Spring 다양한 @(어노테이션) 설정  (0) 2022.09.23
Spring MVC2 DispatcherServlet.xml 설정  (0) 2022.09.21
MVC 패턴의 변화  (0) 2022.09.20
스프링 JDBC 설정  (0) 2022.09.19