이 글은 인프런에 있는 스프링 입문 강의를 보기 좋게 요약한 것입니다.
https://start.spring.io/
Spring Initializr를 이용해 Spring 기본 셋팅을 간편하게 할 수 있다.
Spring 기본 폴더 구성
- main 안에 java, resources 존재
- java 폴더 : java 소스 코드만 보관
- resources 폴더 : java를 제외한 모든 소스 코드 보관
- static 폴더 : html, css, js, img 등등.. 와 같은 정적인 파일 보관
- templates 폴더 : thymeleaf와 같은 폴더 보관(thymeleaf도 확장자가 html이다)
- test 폴더 : Unit test 같은걸 할 때 사용(JUnit과 같은 것)
@GetMapping("hello") : url 경로 상에서 /hello 경로로 들어갔을 때 아래 있는 method 호출
동적 환경 그림

정적 환경 그림

MVC, 템플릿 엔진 그림

- localhost:8080/hello-mvc에 접속하면 내장 톰켓 서버로 간다.
- 내장 톰켓 서버에서 스프링으로 간다.
- 스프링 내에서 helloController를 찾아 return : hello-template, model(name:spring)으로 viewResolver에 전달
- viewResolver에서 Thymeleaf를 이용해 HTML을 변환 후 웹에 띄운다.
@ResponseBody 사용 원리

- localhost:8080/hello-mvc에 접속하면 내장 톰켓 서버로 간다.
- 내장 톰켓 서버에서 스프링으로 간다
- 스프링에서 원래였으면 viewResolver에 전달 해주지만 "@ResponseBody"가 존재 하므로 그대로 HTTP응답에 그대로 데이터를 넘긴다.(문자의 경우 문자 그대로 넘긴다. 객체의 경우 json형식으로 넘긴다.)→HttpMessageConverter에 전달
- 웹에 띄운다.
스프링 빈을 등록하는 2가지 방법
- 컴포넌트 스캔과 자동 의존관계 설정
- 자바 코드로 직접 스프링 빈 등록
1. 컴포넌트 스캔과 자동 의존관계 설정 그림
위 그림과 같이 Controller, Service, Respository는 서로 연결이 되어 코드를 짜면 여러 이점이 존재한다. 이럴 때 사용 하는 방법이 @Service, @Respository, @Controller, @Autowired를 이용한다. → 이것을 이용할 수 있는 범위는 저것을 입력한 컴포넌트와 바로 하위 컴포넌트 뿐이다.
2.자바 코드로 직접 스프링 빈 등록
따로 폴더를 만들어 아래와 같이 Bean을 이용해 스프링빈에 등록 할 수도 있다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
'Develop > Spring' 카테고리의 다른 글
| '코드로 배우는 스프링 웹 프로젝트' 정리(Controller) (0) | 2022.06.23 |
|---|---|
| Spring 궁금했던거 (0) | 2022.03.25 |
| Springboot, Spring 개념정리 3 (0) | 2022.03.22 |
| Springboot, Spring 개념정리 2 (0) | 2022.03.22 |
| Springboot, Spring 개념정리 1 (0) | 2022.03.22 |