본문 바로가기
교육/Spring

Spring 개발자 수업 97일차(1) - Spring MVC Model DI

by yhyuk 2021. 8. 12.
728x90
반응형

Spring MVC Model DI

- 스프링 MVC 모델에서 DI 방식은 2가지가 존재하는데, 기존에 알고있는 XML 방식과 Spring에서 대표적으로 사용하는 Annotation 방식이 있다. 예제를 통해 살펴보자

 

[ 예제 - 어노테이션으로 의존 객체 만들기 ]

- Work.java 하나의 클래스를 미리 먼저 만들어 두고 Controller에서 Work 클래스의 객체를 만들어서 의존 주입 작업을 해보자

  1) DIController.java > @Autowired

  - @Autowired: 아래의 변수에 해당 클래스의 객체를 만들어서 의존 주입 하는 작업

@Controller
public class DIController {

	@Autowired
	private Work work;
    
	@RequestMapping(value = "/di/di.action", method = { RequestMethod.GET })
	public String di(HttpServletRequest req, HttpServletResponse resp, HttpSession session) {

		// 업무 구현 -> 의존 객체 필요 -> 위에 @Autowired 선언
		String result = work.doit();
		
		req.setAttribute("result", result);
		
		return "di/di";
	}

}

 

  2) Work.java > @Service, @Repository, @Component

  - 의존 객체로서의 자격 부여 하기

  - 아래 어노테이션을 사용해야 Controller의 @Autowired에 의해서 호출 당할 자격이 생긴다.

  - 3가지 모두 동일하게 동작하며 각각 이름이 달리 존재하는 이유는 의미를 구분하기 위해서 이다.

   이름 설명
  @Service  서비스 객체(중간 단계 업무 객체)
  @Repository  저장소 객체(DAO)
  @Component   일반 객체(모듈)
@Component
public class Work { // DIController의 의존객체

	public String doit() {
		System.out.println("메소드 호출");
		
		return "의존 객체의 반환값";
	}

}

 

  3) di.jsp

  - DIController.java에서 의존 객체 Work의 반환값으로 넘긴 result 받아서 웹 페이지에 출력하기

<h1 class="page-header">의존 주입</h1> 
<div>result: ${ result }</div>

 

- 결과 페이지

Work 클래스의 doit() 메소드의 반환값이 정상적으로 웹 페이지에 전달된 걸 확인할 수 있다.

 

728x90
반응형

댓글