Spring Boot 01 초기세팅

Kang.__.Mingu·2024년 10월 4일

Spring Boot

목록 보기
1/8

인텔리제이에서 Spring Boot 프로젝트 생성

  • 그룹: 프로젝트를 고유하게 식별하며, 주로 회사 도메인 이름을 거꾸로 입력한다. 지금은 임시로 com.boot

  • 아티팩트: 그룹 내 아티팩트의 이름(일반적인 프로젝트 이름)으로 설정하면 된다.

  • 패키지 이름은 그룹+아티팩트 이름으로 구성된다.

  • Spring Boot는 JDK 17버전 이상부터 지원하기 때문에 17버전으로 맞춰 줘야한다.

=> 다음 버튼 누르고

보이는 사진은 스프링 프로젝트 처음 만들 때 Spring Start Project Dependencies를 설정하는 것이다. 쉽게 말해 프로젝트 생성하기 전에 Maven에서 했던 pom.xml 초기 설정이라고 생각하면 된다.

설정

  • Spring Boot DevTools
  • Lombok
  • Spring Web
  • Spring Data JPA
  • Oracle Driver(오라클 서버 사용하기 위해)
  • Thymeleaf

생성 버튼을 누르면

파일 구조가 이런식으로 잡힌다.

build.grade


  • build.grade란 파일이 하나 생겼는데 이건 Maven의 pom.xml 이라고 생각하면된다.
  • Spring Start Project Dependencies 초기 설정해준 것들이 dependencies에 있다

application.properties(환경설정)

  • 파일을 생성하고 application.properties 파일을 열어보면 spring.application.name 밖에 없다.

  • 아무것도 없기 때문에 추가적으로 설정해줘야한다.

  • application.properties: Spring Application 실행에 필요한 정보를 제공하기 위한 환경설정파일
    => 데이터베이스 연결 정보, 로그 파일 경로, 서버 포트, 보안 설정 등
    => application.properties 파일 대신 application.yml 파일로 작성 가능하다.

  • application.properties 파일의 특징

    • Key - Value 형식으로 키와 값을 한 줄에 정의하여 단순하고 직관적으로 값 제공한다.
    • 중첩 구조로 표현 불가능하므로 값을 제공하기 불편하다.
  • application.yml 파일의 특징

    • 들여쓰기를 사용해 계층 구조로 작성하여 Key: Value 형태로 값 제공 - YAML(Yet Another Markup Language) 형식
    • 중첩 구조를 간단하게 표현할 수 있어 가독성 증가

서버 포트 설정

#서버 포트 설정
server.port=8000
  • 기본적으로 Spring Boot는 내장된 톰캣 서버를 사용하여, 기본 포트는 8080이다. 이 설정을 통해 서버의 포트를 8000으로 변경할 수 있다.

데이터 소스 설정

#DataSource 설정
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=scott
spring.datasource.password=tiger
  • Spring Boot에서 Oracle 데이터베이스에 연결하기 위한 설정이다.
    • driver-class-name: Oracle JDBC 드라이버 클래스 이름을 지정
    • url: Oracle 데이터베이스에 연결하기 위한 URL이다.지금은 localhost Oracle DB를 사용 중이다.
    • usernamepassword: 데이터베이스에 접근하기 위한 사용자 계정 정보이다.

JPA 설정

#JPA 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.open-in-view=false
spring.jpa.database-platform=org.hibernate.dialect.OracleDialect
  • JPA와 Hibernate 관련 설정이다.
    • ddl-auto=update: 엔티티 클래스의 변화를 기반으로 데이터베이스 테이블을 자동으로 업데이트한다.
      (create, create-drop, validate, none 등 다른 옵션들도 있다.)
    • show-sql=true: 실행되는 SQL 쿼리를 콘솔에 출력한다.
    • open-in-view=false: 엔티티 매니저를 뷰 계층에서 열어 두지 않도록 설정한다. 보안 및 성능을 위해 false로 설정하는 것이 좋습니다.
    • database-platform: 사용 중인 데이터베이스에 맞는 Hibernate을 지정한다. Oracle을 사용 중이므로 OracleDialect를 사용한다.

Thymeleaf 설정

#Thymeleaf
spring.thymeleaf.cache=false
  • Thymeleaf 템플릿 캐싱을 비활성화한다. 개발 중에는 캐시를 끄는 것이 유용하지만, 운영 환경에서는 성능을 위해 켜 두는 것이 좋다.

로깅 설정

#logging
logging.level.root=info
  • 기본 로그 레벨을 info로 설정한다. 이를 통해 애플리케이션 info 레벨 이상의 로그(예: 경고, 오류 등)을 출력한다. 더 많은 디버깅 정보를 원하면 debug로 변경할 수 있다.

DevTools 설정

라이브러리 의존성 추가

dependencies{
	implementation 'org.springframework.boot:spring-boot-devtools'
}

application.properties에서 설정

#devtools
spring.devtools.restart.enabled=true
spring.devtools.livereload.enabled=true
  • Spring DevTools 관련 설정
    • restart.enabled=true: 코드가 변경될 때 애플리케이션을 자동으로 재시작한다.
    • livereload.enabled=true: 브라우저가 자동으로 새로고침 되도록 설정한다. 사용하려면 브라우저에 LiveReload 플러그인이 설치되어 있어야 합니다.
    • 크롬 웹 확장 프로그램 LiveReload
    • 인텔리제이에서 추가 설정이 필요


작업 방법

Controller, DTO, Mapper, Repository 등 작성 방법

  • src > main > java > com.boot.study 패키지를보면 아티팩트명Application.java 파일이 있다.

  • @SpringBootApplication 어노테이션과 main 메서드가 작성된 클래스가 있는데, 이 클래스가 Spring Boot를 실행시키는 클래스이다.

  • Spring에서는 src > main > java에 만들고 싶은 패키지 명을 쓰고 Controller나 DTO등 작업했지만 Spring Boot에서는 루트 패키지(com.boot.study)를 그대로 쓰고 만들 패키지를 연결해서 작성해야한다.
    => ex) com.boot.study.controller
    이런식으로 작성해야 루트 패키지가 어노테이션을 찾아서 실행시킬 수 있다.

Views, Properties, Static 작성 방법

  • src > main > resources

  • 전에는 JSP로 View Page를 만들었다면 Spring Boot는 Thymeleaf를 이용해서 HTML 파일로 만들어 View Page를 만든다. resources > templates에 View page 생성

  • Thymeleaf를 사용하려면 html 태그에 밑에처럼 추가하면 사용할 수 있다.

<html xmlns:th="http://www.thymeleaf.org">
  • properties 같은 경우 src > main > resources안에 .properties 확장자를 붙여 작성하면 된다.

  • 변하지 않는 값을 지정할 때는 static 폴더를 만들어 작성하면 된다. static 폴더 안에는 변하지 않는 css, js, images 파일들을 지정해두면 된다.


예시 사용법

xyz.itwill.boot.controller > HomeController

@Controller
public class HomeContoller {
	@GetMapping("/")
	public String main(Model model) {
		model.addAttribute("name", "임꺽정");
		return "index";
	}
}

templates > index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>BOOT</title>
</head>
<body>
	<h1>Hello, Spring Boot!!!</h1>
	<hr>
	<h3><span th:text="${name}">홍길동</span>님, 안녕하세요</h3>
</body>
</html>

이런식으로 JSP에서는 EL 표현식으로 model 객체로 속성을 받아 ${name}에 들어있는 값을 처리한다 라고 표현하지만 Thymeleaf에서는 EL 표현식이 아닌 변수 표현식이라고 표현한다.

이런식으로 작성하고 루트 패키지의 BootApplication을 실행시키면

값이 잘 출력되는 걸 알 수 있다.

profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글