[Spring Boot] 환경설정+스프링 웹 개발 기초

minsikk·2024년 9월 28일

Spring Boot

목록 보기
1/1

스프링부트에 대한 개념 공부가 부족하다고 생각되어서 동아리 스터디로 김영한의 <스프링 입문-코드로 배우는 스프링 부트, 웹, MVC, DB 접근 기술> 강의를 수강하게 되었다.


빌드 자동화 도구는 Gradle을 사용하였다. 이는 의존성을 알아서 관리해주고, build.gradle에 스크립트를 작성하고 대규모 프로젝트에서 복잡해지는 경향이 있는 XML 기반 스크립트에 비해 관리가 편리하다는 장점이 있다. Maven에서 발전된 것이라고 보면 된다.


Gradle Project 구성

  • .gradle : gradle 버전 별 엔진 및 설정 파일
  • .idea : 에디터 관련 파일들
  • gradle/wrapper : 사용자가 Gradle을 설치하지 않았어도 Gradle tasks를 실행할 수 있도록 도와줌
    (프로젝트 생성자와 사용자가 동일한 버전의 Gradle 사용 가능)
    - gradle-wrapper.jar : Wrapper 파일로 실행 스크립트가 동작하면 Wrapper에 맞는 환경을 로컬 캐시가 다운로드 받은 뒤 실제 명령에 해당하는 task 실행
    - gradle-wrapper.properties : Gradle Wrapper 설정 파일
  • gradlew : Unix용 실행 스크립트
  • gradlew.bat:Windows용 실행 스크립트 (cmd에서 해당 경로로 이동 -> gradlew build
  • build.gradle : 의존성, 플러그인 설정 등 프로젝트 빌드에 대한 모든 기능 정의
  • settings.gradle : 빌드할 프로젝트 정보 설정



스프링 부트 라이브러리

  • spring-boot-starter-web
    • spring-boot-starter-tomcat : 톰캣(웹서버)
    • spring-webmvc : 스프링 웹 MVC

정적 컨텐츠

@Controller
public class HelloController{
	@GetMapping("hello")
    public String Hello(Model model){
    	model.addAttribute("data","hello!");
        return "hello"; //resources/templates/hello.html 로 렌더링 
  • hello-static.html 그대로 웹 브라우저에 반환 

MVC와 템플릿 엔진

MVC : Model, View, Controller

  • Controller
@Controller 
public class HelloController{
	@GetMapping("helloMvc")
    public String helloMvc(@RequestParam("name") String name, Model model){
    model.addAttribute("name",name);
    return "hello-template";
    }
}
  • View
resoureces/templates/hello-template.html 

MVC, 템플릿 엔진 이미지

업로드중..

웹 브라우저에서 요청이 내장 톰캣 서버로 가게 되면 그 요청이 helloController로 던져진다. 그리고 model안에 name value 값을 가지고 viewResolver로 간다. 여기서 타임 리프 템플릿 엔진 처리를 한 후 웹 브라우저에 다시 보여질 때는 HTML을 변환 후에 화면에 보여지게 된다.


API

  • @ResponseBody 사용 -> viewResolver 사용X
  • HTTP의 BODY에 문자 내용을 직접 반환
  • @ResponseBody 사용 + 객체 반환 -> 객체가 JSON으로 변환됨
@ResponseBody 객체 반환
@Controller
public class HelloController{
	
    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
    	Hello hello=new Hello();
        hello.setName(name);
        return hello;
    }
    
    static class Hello{
    	private String name; //외부에서 접근 X 
        
        //getter,setter같은 메서드들을 통해서 외부에서 접근할 수 있도록
        public String getName(){
        	return name;
        }
        
        public void setName(String name){
        	this.name=name;
        }
        
     }
     
 }
  • @ResponseBody 를 사용
    • ViewResolver 대신 HttpMessageConverter 사용
    • JSONConverter(객체인 경우), StringConverter(단순 문자인 경우)

✍️ 대부분 JSON 을 가장 많이 사용하기는 함 !!


기본적인 spring 동작 과정 큰 틀을 알았으니 다음에는 tomcat에 대해서 더 자세히 알아보고, 본격적으로 spring 공부를 시작해봐야겠다.
profile
감자 대학생

0개의 댓글