Spring

[Spring] @Component를 상속받은 어노테이션

웹코린이 2023. 8. 10. 15:17
728x90

 @Repository 

MVC 패턴 Model 파트에서 사용 (DAO 구나라고 알 수 있음)

 

 

@Service

Controller 파트에서 사용 (Service 레이어에서 활용됨)

 

 

@Controller

Controller 파트에서 사용
implements Controller 대신 사용
@Override 삭제 가능

 

@Controller 를 사용하므로써 메소드의 강제성이 사라졌다. 따라서 메소드 시그니처가 고정되어 있지 않다는 말이 된다. 그러므로 특정 요청에 대해 Controller 객체를 찾아가는 것이 아니라 메소드를 찾아가는 것이 된다. 또한, 비슷한 로직끼리의 메소드를 묶을 수 있지만 응집도가 높아지는 단점이 있다.

 

 

LoginController.java

@Controller
public class LoginController {

	@RequestMapping(value="/login.do") 
	public String login(MemberVO mVO, MemberDAO mDAO, HttpSession session) { // 로그인
		System.out.println("LoginController 로그");
		mVO = mDAO.selectOne(mVO);
		if(mVO != null) {
			session.setAttribute("memberId", mVO.getMid());
		}
		return "redirect:main.do";
	}
	
	@RequestMapping(value="/logout.do")
	public String logout(HttpSession session) { // 로그아웃
		System.out.println("LogoutController 로그");
		session.removeAttribute("memberId");
		return "redirect:main.do";
	}

 

또한 Command 객체도 바뀔 수 있는데 new하는 모든 객체들을 컨테이너가 관리하게 된다. 해당 객체가 언제, 어떤 메소드를 호출해야 하는지까지 관리한다. 예를 들어, DispatcherServlet이 초기화 될 때, init()을 불러야 한다. 이 말은 DispatcherServlet이.do 요청을 받았을 때, doGet() / doPost()를 실행한다는 말이다.

 

 

정리하자면 .do 요청을 받으면 객체화를 수행하고, request로부터 값을 추출하여 setter 처리까지 자동으로 처리해주는 객체를 말한다.

 

 

GET & POST 사용 방법

@RequestMapping(value="xxx.do" method=RequestMethod.GET)

@RequestMapping(value="xxx.do" method=RequestMethod.POST)

// 이를 추가할 수 있다.
// 사용자의 악의적 직접 접근을 막을 수 있기 때문에 사용

 

 

 

728x90