스프링 부트 스타터로 프로젝트 생성
-spring boot 설정할 때 뒤에 snapshot이 붙은 것들은 아직 정식 버전이 아니기 때문에 붙지 않은 다른 것들로 선택
IntelliJ에서 만든 프로젝트 염
- test 코드 : 요즘 개발과정에서 test가 가장 중요하다고함
- build.gradle : 스프링부트 나오면서부터 개발자친화적으로 설정파일까지 제공해줌
✔︎Library
External Library 내에 수많은 빌드 툴들이 존재 // 서로 의존에 필요해서
✔︎환경설정 및 공식문서
스프링부트는 매우 포괄적이기 때문에 공식문서를 잘 활용할 줄 알아야함
spring.io 에서 사용기능들 검색 활용이 중요
템플릿 엔진 [thymeleaf]
서버 재시작없이 수정사항 바로 반영되게끔 하는 spring-boot-devtools 라이브러리 추가
- build.gradle의 dependencies안에 의존성 추가
developmentOnly 'org.sppringframework.boot:spring-boot-devtools'
- main-resources-application.properties에 application.properties에 사용 여부 추가
(필수적인 작업은 아니나 사용할 땐 true, 아닐 땐 false로 바꿈으로서 유용함)
spring.devtools.livereload.enabled=true
spring.devtools.restart.enabled=true
- intelliJ 환경설정
- 확장프로그램 설치
https://chrome.google.com/webstore/detail/livereload%20%20/ciehpookapcdlakedibajeccomagbfab
✔︎터미널에서 실행 (해결되지 않아서 실행방법만 기술)
1. IntellJ 종료후 터미널 접속
2. 프로젝트 경로로 접속
$ cd spring
$ cd hello-spring
3. build
$ ./gradlew build
이걸로 미해결
https://veneas.tistory.com/entry/IntelliJ-Execution-failed-for-task-compileJava
build.gradle 파일의 org.springframework.boot의 버전을 2.4.0으로 바꿔줬더니 새로운 에러가 발생
4.
$ cd build
$ ls
$ cd libs
$ ls -arlth //아마도 종료
✔︎MVC : Model, View, Controller
최근에는 Controller와 View를 쪼개서 진행함
<Controller>
main-java-hello-hellospring-controller-HelloController.java
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
@GetMapping("hello") // url매칭됨
public String hello(Model model){
model.addAttribute("data", "hi!!"); // key는 data 값은 hello!!
return "hello"; //hello.html을 return해라 return을 하게 되면 resources-templates에서 파일을 찾음
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
<View>
resource-templates-hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello '+ ${name}">hello! empty</p>
</body>
</html>
http://localhost:8080/hello-mvc?name=spring!!!!!!!!!!
위에 접속했을 때
✔︎API
@ResponseBody 문자반환 (아래서 세번째줄부터 추가)
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("hello") // url매칭됨
public String hello(Model model){
model.addAttribute("data", "hi!!"); // key는 data 값은 hello!!
return "hello"; //hello.html을 return해라 return을 하게 되면 resources-templates에서 파일을 찾음
}
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
command+N 단축키로 만듬
코드 치다가 command+shift+enter 치면 코드 완성시켜줌
http://localhost:8080/hello-api?name=spring!!!!!!!!!!
이 경로 접속 시 json 형태로 출력이 되는것을 확인할 수 있음
api 동작방식
- localhost:8080/hello-api 접속 시 스프링으로 넘어가서 @ResponseBody를 읽게 되면 HttpMessageConverter를 이용해서 Json 스타일로 바꾼 내용 그대로를 반환한다.
- 객체를 받게 되면 json 방식으로 데이터를 만들어서 http 응답을 한다.
- viewResolver 대신 HttpMessageConverter가 동작함
✔︎회원도메인과 레포지토리
hello-hello-spring 에 domain이라는 폴더 생성
'개발 > spring' 카테고리의 다른 글
[스프링] 싱글톤 컨테이너 (0) | 2024.04.26 |
---|---|
[스프링] 스프링 컨테이너와 스프링 빈 (0) | 2024.04.25 |
[스프링] 스프링 핵심 원리 - 기본편 2 (0) | 2023.11.27 |
[스프링] 스프링 핵심 원리 - 기본편 1 (0) | 2023.11.27 |