검색결과 리스트
글
LANGUAGE/SPRING
2020. 3. 11. 12:24
갑자기 Spring4 소스를 분석해야 하는 친구를 위한 간단정리
(특정 소스를 분석하여 다른언어의 지식이 있는 Spring알못에 맞춰 열거적으로 개념을 설명
한 노트이다.)
Spring ?
- Java로
MVC패턴의 WebApplication
을 쉽게 만들 수 있는FrameWork
- 전체적인 그림
[View] <=> [ @Controller -> @Service -> @Repository -> MyBatis(.xml) ] <=> [DataBase]
1. Controller
@Controller
- 특징
- 주로 페이지 호출을 위한 Controller
- 주소(URL) =
DOMAIN
+ContextPath
+Class의 RequestMapping("A")
+Method의 RequestMapping("B")
- 각 Method에서 무슨 일이 생기고 있는 거야 ??
Model model
: (매개변수로 정의되었을 때) 특수한 객체로 JSP에서 사용할 수 있는 변수를 다룬다.- 매개변수로 정의되는 몇몇 특수한 객체를 제외하고는 화면에서 보낸 값들을 매개변수에 자동으로 매칭시킨다.
@RequestParam("..")
: 스프링이 화면에서 던져주는 변수명과 매칭되는 곳에 자동적으로 값을 넣어주지만, 개발자의 의도에 따라 다른 변수에 매핑시키도록 함@PathVariable("..")
: @RequestMapping의 문자값 속에 {}로 선언된 부분의 명칭을 사용하여 매개변수에 매핑시키면 => URL중 해당부분에 사용자가 적은 값을 매핑시킴@ModelAttribute("..")
: 선언한 매개변수를 해당 명칭으로 Model객체의 속성으로 자동 추가
- View페이지 출력 정의가 어딨어 ?
return "주소.."
: 해당경로의 JSP파일을 호출!return 이 없넨 void네?
: 현재 호출된 RequestMapping주소 경로의 JSP파일을 호출!return "redirect:주소.."
: 해당 주소의 Controller를 이어서 호출!
- View페이지가 어떻게 호출되는 거야 ???
web.xml
에 사용할 스프링 설정파일이 설정되어 있음- 설정파일(
PATH/TO/servlet-context.xml
)을 보면- =>
InternalResourceViewResolver
에 의해 prefix로는/WEB-INF/views/
, surfix로는.jsp
.. 이런식으로 설정- => 따라서 특정 주소가 호출되면
Controller
를 거쳐 =>[prefix + 호출주소 + surfix]의 파일을 가공
하여HTML로 만들어 사용자에게 제공
됨
- => 따라서 특정 주소가 호출되면
- =>
- 데이터를 다루는 Controller의 Method
@ResponseBody
가 선언된 Method는 Data를 받기 위한 Request매핑임. (Page호출X)@RequestBody
가 선언된 매개변수(객체)는POST
방식의 호출로 받은 Body값들을 주입받는다.return
시 값을 전달한다. (Page호출X)
@RestController
- 특징
- Data API목적으로 설계된 Controller이다. (Page호출X)
- 위 @ResponseBody가 Method마다 자동으로 붙는다 생각하면됨 (따로 @ResponseBody를 선언하지 않아도 되는 장점)
- 주로 화면에서는 데이터처리를 위해
Ajax를 이용하여 이곳으로 호출
.
2. Service
@Service
- 특징
- Interface가 존재 - (장단점도 있긴한데 상황에 따라 말도 많지만 일단 기계적으로 사용한다 생각하길)
- Interface를 Implements한 Class가 따로 존재.
- Controller단(또는 다른 어떤곳)에서 이를 참조하여 사용할시 Interface Class를 선언하여 사용. (그리고 @Inject 또는 @Autowired를 위에 선언하면 스프링이 참조시킴)
- 주로
@Controller
Class 와@Repository
Class 사이에서데이터를 가공하는 중추적인 역할
을 한다. - 단순하게 만들 때는
@Repository
Class 로 가는 길목이 되기도 한다.
3. Repository
@Repository
- 특징
- Interface가 존재
- Service단에서 이를 참조하여 사용할시 Interface Class로 선언하여 사용. (그리고 @Inject 또는 @Autowired를 위에 선언하면 스프링이 참조시킴)
~DAO
라는 명칭을 주로 사용한다.MyBatis
라 하여Mapper
(xml파일)에 따로Query문을 소스코드와 분리하여 관리
하는 구조의 모듈이다. (많이 사용한다)- 설정파일(
PATH/TO/root-context.xml
)을 보면DriverManagerDataSource
Class를 보면DB연결정보
관리중SqlSessionFactoryBean
Class를 보면 Query와 WebApplication에서Data를 받기위한 객체설정
과Mapper(xml)파일 위치
를 관리 중
'LANGUAGE > SPRING' 카테고리의 다른 글
[Spring] XSS 방지하기 - OWASP AntiSamy Project (0) | 2020.10.26 |
---|---|
[잡담] 스프링! 한글과 비견될 수 있을까? .. (0) | 2020.03.09 |
[MyBatis] Java 함수사용하기 (0) | 2017.03.27 |
[SpringBoot] logging (0) | 2016.05.11 |
[Spring] SessionStatus (0) | 2016.03.09 |