[스프링부트] [JAVA] [입문] 1. 프로젝트 생성 및 환경설정

업데이트:

Spring Boot 프로젝트 생성

웹개발을 하기위해 가장 많이 사용되는 Spring Boot를 공부해보고자 한다.
공부하기에 앞서 필요한 여러가지 환경설정과 설치파일을 준비해보자.





< 사전 준비물 >

  • Java 11설치
  • IDE : IntelliJ 또는 Eclipse ( 해당 포스트는 IntelliJ를 사용한다 )







스프링 부트 스타터 사이트로 이동하여 스프링 프로젝트 생성 https://start.spring.io/

  • Project : Gradle Project ( 요즘에는 거의 Gradle을 사용 )
  • Spring Boot : 2.6.6
  • Group : 보통 기업에서는 기업 도메인을 적는데 우리는 아무거나 적어도 된다
  • Artifact : 프로젝트명을 적어주면 된다
  • Name, Description, Package name : 알아서 적어주면 된다.
  • Dependencies : Spring Web, Thymeleaf


[참고]
Spring Web웹프로젝트를 만들기 위한 라이브러리 이다.
Thymeleafhtml을 만들어주는 템플릿 엔진이다. 프로젝트 마다 여러 종류를 사용할 수 있지만 여기서는 Thymeleaf를 쓰겠다. Spring Boot 버전은 업그레이드 됨에 따라 변경될 수 있다. SNAPSHOT이나 M1 같은 미정식 버전을 제외하고 사용하면 된다.


이렇게 스프링 프로젝트를 세팅 한 뒤에 원하는 폴더에 생성해주면 된다.


이후 IntelliJ에서 생성한 스프링 프로젝트를 실행해주면 된다.







생성된 코드 확인

build.gradle


 // 필요한 플러그인을 땡겨오는 용도
 plugins {  
  id 'org.springframework.boot' version '2.6.6'  
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'  
  id 'java'  
}  
  
group = 'hello'  
version = '0.0.1-SNAPSHOT'  
sourceCompatibility = '11'   // Java 11
  
repositories {  
  mavenCentral()  
}  
  
// 처음에 Dependecies 가져온것들
dependencies {  
  implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'  
  implementation 'org.springframework.boot:spring-boot-starter-web'  
  testImplementation 'org.springframework.boot:spring-boot-starter-test'  
}  
  
tasks.named('test') {  
  useJUnitPlatform()  
}
  • 스프링 부트 메인 실행 후 동작을 확인할 수 있다.
  • IntelliJ자체에서도 확인가능하지만 로컬환경에서 확인이 가능하다.
  • http://localhost:8080




HelloSpringApplication.java

package hello.hellospring;  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
  
@SpringBootApplication  
public class HelloSpringApplication {  
  
   // HelloSpringApplication 클래스를 실행시키는 코드  
  public static void main(String[] args) {  
      SpringApplication.run(HelloSpringApplication.class, args);  
  }  
  
}

위의 코드가 main 자바 파일이다. 이를 실행시킨뒤 로컬 서버에 접근하면 메인페이지를 볼 수 있다.





실행결과 ( http://localhost:8080 )

기본설정 그대로 실행했을때는 위와 같은 화면이 나왔다면 성공!







※ IntelliJ 대신 자바로 직접 실행하기 (참고)

  • 현재 IntelliJ는 Gradle을 통해서 실행하는 것이 기본설정인데, 이는 실행속도가 느리다. 그래서 자바로 바로 실행 할 수 있도록 설정을 변경해주는 것이 좋다!

  • Setting -> Build,Execution,Deployment -> Build Tools -> Gradle
  • Build and run using : Gradle -> IntelliJ IDEA
  • Run tests using : Gradle -> IntelliJ IDEA







View 환경설정

Welcome Page 만들기

이제 메인페이지를 만들어서 띄워보자! html을 이용하여 간단하게 만들어보았다. 파일경로는 main/resources/static 에 넣어주면 되는데 이곳에 html파일을 넣어주면 자동으로 Welcome Page로 지정해준다.


resources/static/index.html

<!DOCTYPE HTML>  
<html>  
<head>  
 <title>Hello</title>  
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
</head>  
<body>  
Hello  
<a href="/hello">hello</a>  
</body>  
</html>




결과화면

이런 결과화면이 나온다면 성공이다!







Controller 와 View

웹페이지의 컨트롤러를 만들기 위해 main/java/hello.spring 위치에 controller라는 폴더를 하나 생성해주고 HelloController.java라는 파일을 하나 만들어 준다.


/HelloController.java

package hello.hellospring.controller;  
  
import org.springframework.stereotype.Controller;  
import org.springframework.ui.Model;  
import org.springframework.web.bind.annotation.GetMapping;  
  
@Controller  
public class HelloController {  

  // 웹어플리케이션에 '/hello'라고 들어오면 Mapping된 메소드를 호출해준다.
  // 여기서는 index.html에 hello라는 단어의 하이퍼링크를 /hello로 달아줬기때문에 hello링크를 클릭했을 때를 말한다.
    @GetMapping("hello")  
    public String hello(Model model){  
        model.addAttribute("data","hello!!");  
 return "hello";  
 // 컨트롤러에서 리턴값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다.  
 // resources:templates/ +{ViewName} + .html  }  
}
  • @GetMapping("hello") 의 의미는 localhost:8080/hello 요청이 들어오면 아래의 함수를 실행하라고 해석할 수 있다.
  • model.addAttribute("data", "hello") 에서 data는 key값이고 hello!!는 value를 의미한다.
  • Controller에서 리턴값으로 반환된 문자 hello는 좀 뜬금없게 느껴지는데 이는 스프링에서 src/main/resourcestemplates에서 hello라는 이름의 View를 찾아서 반환해준다는 뜻이다.
  • resources:templates/ +{ViewName} + .html




resources/templates/hello.html

<!DOCTYPE HTML>  
<html xmlns:th="http://www.thymeleaf.org"> <!-- thymeleaf 문법을 쓸수 있도록 넣어줌 -->  
<head>  
 <title>Hello</title>  
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
</head>  
<body>  
<!-- 여기서 data는 controller의 model의 key값 -->  
<!-- th는 thymeleaf의 문법 -->  
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>  
</body>  
</html>



Controller에서 hello를 return했으므로 hello.html을 작성해봤는데

<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>

여기서 ${data}HelloController.java의 모델에서 사용한 value값을 가져오는데

public String hello(Model model){  
        model.addAttribute("data","hello!!");  
 return "hello";  

key값 data의 value인 “hello!”를 반환한다.




동작 환경

  1. 컨트롤러에서 return “hello”를 한다.
  2. resources/templates/hello.html 을 찾아가서 렌더링을 한다
  3. 이때 찾는 과정은 viewResolver가 자동으로 해준다.
  4. 기본 매핑경로는 resources/templates/{ViewName}.html 이다.







여기까지 스프링부트 입문 - 프로젝트 생성 및 환경설정 포스팅을 마친다.

댓글남기기