The Debugging Chronicles : "코드의 미학"

[Spring] 어노테이션 Controller, RequestMapping 본문

Spring

[Spring] 어노테이션 Controller, RequestMapping

sweetseonah1004 2024. 10. 8. 14:36

 

ds-servlet.xml의 설정이 과도해져서 어노테이션으로 줄일 수 있다.

 

어노테이션 component는 일반 객체라는 뜻이다

 

어노테이션 component을 상속 받은
   @Repository   DAO
   @Service      Service
   @Controller   Controller

있는데

 

Controller어노테이션을 사용한다.

 

 

 

컨트롤러라는 것을 인지 하기 위해 implements Controller를 사용하고 있는데 

controller 어노테이션을 사용해 컨트롤러 객체라는 것을 나타낸다.

 

 

근데 오버라이드에서 오류가 난다.

오버라이드는 부모 인터페이스가 사라지게 되어서 더이상 오버라이드가 불가능하게 된다.

(객체(추상클래스)는 extends로 , 인터페이스는 implements로 상속 받음 )

 

따라서 지워준다.

 

이제 문법적으로 이름을 바꾸어 주어도 문제가 없다.

 

인터페이스를 쓰지 않기 때문에

메서드 자유도가 높고 성능이 좋다.

그대신 개발자가 신경쓸 일이 많아진다.

(type이 String으로 변했기 때문에 가벼워져서 성능이 좋아진다.

 나중에는 mav로 데이터를 일치 시켜서 사용하는 것이 좋다.

 왜냐하면 데이터를 전송하면 mav로 하기 때문이다)


예시로 LogoutController를 만들어 보자

 

 

 


 

만약에  한 컨트로럴에 메서드가 여러개로 늘어 난다면 어떻게 맴핑 시킬까?

그래서

핸들러 맴퍼 bean 태그 대신에 어노테이션 RequestMapping을 사용해서 지정한다.

한 컨트롤러에서 여러개의 메서드를 사용해도 구별할 수 있게 된다.

 


로그인 로직이 있다면 로그아웃 로직이 따라온다.

그럼 같이 묶어서 코딩을 하면 안될까?

 

로그인과 로그아웃은 관계가 있는 로직은

하나에 다 묶을 수 있다.

그러면 응집도가 높아진다.

== 연관이 있는 메서드만!!! 모든 메서드 같은 컨트롤러에 위치하면 결합도가 높아져서 x

 

 

실제로도 실무에서 하는데

'컨트롤러 통합' 이라고 한다.

 

 


 

 

다듬어 보자

 

로그인이기 때문에 mav에서 session으로 바꾸어 주는 것이 좋다.

왜냐하면 로그인 할 때 데이터는 페이지가 이동거나 창이 닫치더라도 데이터는 유지되어야하기 때문이다.

 

 

session은 브라우저에서 쓰는 모든 정보를 담고 있다. 로그인 등등.

mav에 있는 모델은 다음페이지까지만 전달이 된다.