본문 바로가기

개발/자바 웹 프로그래밍 Next Step

[10장] 새로운 MVC 프레임워크 구현을 통한 점진적 개선

# 요구사항

1) 새로운 기능이 추가될 때마다 매번 컨트롤러를 추가하는 것이 아니라 메소드를 추가하자. 

2) URL 매핑시 HTTP 메소드 (GET, POST, PUT, DELETE)도 매핑에 활용하자. 

    -> URL은 같지만 다른 메소드로 매핑하고 싶다. 

 

# 리플렉션(Reflection)이란?

 

영어단어 Reflect:  사물의 속성을 나타내다

 

자바에서 리플렉션은

런타임에 클래스의 정보를 조회하는 것이다.

 

자바 고유의 기술이며 다른 언어에서는 찾아볼 수 없다. (혹시라도 생겼다면 댓글로 알려주세요!)

 

사용하는 곳: 프레임워크 개발(예. 스프링), 하이버네이트

궁금한점 : 웹 개발에서는 언제 쓸까? -> 어노테이션이 동작하는 원리가 reflection이라고 한다. 

개발자가 직접 리플렉션 개념을 건드릴 일은 없는걸까?

 

예시코드 : https://hiddenviewer.tistory.com/114

 

(1) 리플렉션(Reflection)

자바에서 리플렉션은 유연성을 제공하기 위해 필수적인 기법이다. 물론 리플렉션이 없더라도 훌륭한 코드를 작성할 수 있다. 하지만 리플렉션을 사용하면 좀더 유연한 프로그램을 작성할 수 있

hiddenviewer.tistory.com

예제 코드

https://dbbymoon.tistory.com/5

 

Annotation과 Reflection을 이용한 챗봇 컨트롤러 만들기

챗봇은 입력받은 메시지에 대한 기능을 수행하고 답장을 보내며 사용자와 대화합니다. 저는 이번에 스프링 부트로 가계부 챗봇을 개발하며, 명령어에 대한 요청을 처리하는 '챗봇 컨트롤러'를

dbbymoon.tistory.com

질문 사항 : 함수 구현시 throws를 넣는것은 필수일까? (묵시적은 YES, 그렇지 않다면 개발자 선택에 따라)

-> throws를 넣지 않아도 되는 경우는 언제가 있을까?

 

(함수에서 예외가 일어나지 않는다고 어떻게 장담하지? 내부에서 try-catch로 처리하는 경우 빼곤 없을 것 같은데)

 

Handler 매핑에서 애노테이션을 사용하나보다. 

 

# 기존 코드 

-> 컨트롤러가 추가 될 때마다 mapper를 추가 해줘야함. OCP에 어긋난다

* OCP란 

https://dublin-java.tistory.com/48