spring의 기본 역할
1) @RestController, @Controller, @Service, @Repository, @Component, @Bean...
이런 어노테이션을 달아놓은 클래스들에 대해서는 spring이 대신 new 해서 만들어줄 것이다.
이때 범위를 알려주는 것 : 컴포넌트 스캔
2) 1번을 통해 만들어놓은 인스턴스들을 필요한 사람이 손들어서 요청하면 내가 전달해줄 것이다.
DI - @Autowired, 생성자를 통해 선언을 하거나, setter method를 통해 선언하면 spring이 해당 인스턴스(=빈)을 찾아서 꽂아준다.
실습 코드로 예를 들어보면, -> HiController에서 HiService를 사용하겠다.
@RestController
public class HiController {
@Autowired
private HiService hiService;
}
public class HiService {
}
이때 작성을 잘못하면 에러가 날 수도 있다. 이 내용을 기억하면서 에러 메시지를 주의 깊게 확인하기!
-> 스프링이 대신 생성, 관리해주는 클래스들에 대한 기본적인 위치, 대상정보들에 대해 유의하기.
web 개발을 / Backend 개발을 하려고 하면 필요한 것들이 많이 있다.
대부분의 것들은 항상 반복되는 작업이다.
=> spring boot가 반복되는거는 항상 내가 디폴트로 상품을 제공해줄게 (ex 자동차 기본 깡통옵션차)
-> 근데 니가 추가적으로 필요한거 원하는게 있다면 알려줘. 내가 그거까지 반영해줄게.
-> 또는 니가 직접 설정하고 싶다면, 직접 설정할 수 있게 해줄게.
=> 이렇게 제품을 만들어서 제공중인게 spring boot이다.
ex) 음식 두부
=> 예전에는 콩심고 수확하고 멧돌에 갈아서 압축해서 먹어야했다면,
spring boot는 그걸 생략하고 두부만 받아서 먹을 수 있도록 해준다.
하지만 개발자는 언젠가 콩심는 법, 수확하는 방법,,, 등등을 알아야 좋은 개발자가 될 수 있다!!
servlet == http 를 처리할 수 있도록 해준 네트워크, 앱 개발 규약이다. (java의)
=> servlet의 규약에 맞춰서 만든 상품들이 있는데, 그중 대표적인게 tomcat이다.
tomcat 같은 제품들을 흔히 servlet container 라고 칭한다.
spring의 core기능을 바탕으로 (객체생성관리) "spring-web" - servlet을 customize (Dispatcher Servlet) 흐름 비유로 쉽게 알아보기
'''
1) dispatcher servlet : 대장
2) handlermapping
@RestController > @GetMapping, @Post, ...
http://localhost:8080/hello/instr
uri(url들)에 대해서 어떤 요청은 어떤 컨트롤러의 어느 메소드한테 전달하면 될지? 이런 것들에 대한 세부 정리 (작업반장 == handlermapping)
handlermapping을 통해서 요청받은것들을 일단 우리가 작성한 코드를 통해서 수행을 다 했다.
=> 수행결과물은 (josn, html, ...)
3) viewResolver : 마지막 포장하는 사람
http request ->
1. DispatcherServlet이 딱 받아서 handlermapping한테 야 이거 맞는거 처리해줘 위임.
2. hadlermapping : 아 여기에 해당되는 컨트롤러와 메소드가 존재합니다. 그리고 이건 GET 만 받을 수 있다고 합니다. (POST로 요청시)
3. 2번 과정에서 문제가 없다면 그제서야 우리가 작성한 controller부터 코드들이 수행이된다. 수행이 다 되면 결과를 다시 dispatcher servlet이 인지를 해서
4. 이거 결과 처리 다 됐다니까 이쁘게 포장해서 최종 전달해! -> viewResolver한테 명령함.
5. viewResolver가 마무리해서 요청자한테 전달하고 끝남.
'''
+) 3번에 대해서 강사님 설명 추가
3. 2번과정에서 문제가 없다면 그제서야
우리가작성한 controller부터 코드들이 수행이 된다.
=> 근데 우리가 작성한 코드들이란.대부분 데이터를 저장/조회/관리하는게 많다
=> 데이터는 대부분 RDBMS라는 곳에 저장해서 사용하니 문제가 없다.
=> 그럼 java를 통해서는 DB를 어떻게 사용할수 있을까 => 수요일에 학습한 내용.
=> 이건 너무 무식한 방법이다. 다르게 해보자 spring-jdbcTemplate & Mybatis설정/사용예시본거고 + 그럼 본격적으로 데이터 관리를 한번 해보자 == 간단한 수강신청 기능 만들어보기
=> 요즘에 좀더 편하게 나온게 있고 대부분 회사들에서도 많이 사용한대 : JPA(hibernate) + querydsl
'Back-End > Spring' 카테고리의 다른 글
[Spring] JPA로 CRUD 블로그 만들기 실습 정리 (0) | 2024.03.12 |
---|---|
[Spring] API와 REST API/MyBatis 블로그 만들기 실습 정리 (0) | 2024.03.11 |
[Spring] MyBatis 실습 / JPA 개념 (외부) (0) | 2024.03.07 |
[Spring] Docker, JPA 기초 실습 (외부) (0) | 2024.03.06 |
[Spring] 동적 페이지 구현/스프링 핵심 개념 (0) | 2024.03.05 |