🏆 2024

맛집 분야 크리에이터

🏆 2023

IT 분야 크리에이터

👩‍❤️‍👨 구독자 수

182

✒️ 게시글 수

0
https://tistory1.daumcdn.net/tistory/4631271/skin/images/blank.png 네이버블로그

🩷 방문자 추이

오늘

어제

전체

🏆 인기글 순위

티스토리 뷰

728x90
반응형

스프링 부트 쇼핑몰 프로젝트 with JPA -1. 애플리케이션 생성하기


스프링 부트 쇼핑몰 프로젝트 with JPA 라는 책을 읽으며 정리한 내용입니다, 
이미 스프링부트로는 개발을 많이 해보았으나 JPA를 공부하기 위해 이 책을 골랐습니다.

 

 



스프링부트의 특징

1. 내장 서버를 이용해 별도의 설정 없이 독립 실행이 가능한 스프링 애플리케이션
2. 톰캣, 제티 또는 언더토우와 같은 웹 애플리케이션서버(WAS) 내장
: 스프링부트는 디폴트 내장 서버로 톰캣을 사용하고 있습니다. 제티나 언더토우 같은 내장 웹서버를 사용하기 위해서는 pom.xml 설정값을 작성하는 것만으로 쉽게 변경이 가능합니다.
3. 빌드 구성을 단순화 하기 위한 Spring Boot Starter 의존성 제공
: 프로젝트 설정을 자동화해주는 모듈입니다. 
4. XML 설정 없이 단순 자바 수준의 설정 방식 제공
: XML 파일은 문법이 틀리면 어느부분이 틀렸는지 쉽게 알수 없으나 자바는 컴파일러의 도움을 받기 때문에 설정 정보 오류를 미리 알 수 있습니다. 클래스 단위로 설정하기 떄문에 쉽게 관리할 수 있습니다.
5. JAR를 사용해 자바 옵션만으로 배포 가능
6. 애플리케이션의 모니터링과 관리를 위한 스프링 액추에이터 제공
: 스프링 액추에이터는 스프링 부트 애플리케이션에서 제공하는 여러 정보를 손쉽게 모니터링할 수 있또록 도와주는 라이브러리입니다. 

 

 


여기에서 JDK, intellij 등..  프로그램을 설치하는 부분은 생략합니다.
스프링부트 프로젝트를 생성합시다.
https://start.spring.io/ 사이트에 접속해서 프로젝트 조건에 맞게 내려받아 사용할 수 있습니다.

https://start.spring.io/

 

 

 

 

 

 

프로젝트는 아래와 같이 설정했습니다.

 

 

 

빌드 툴 - 메이븐
언어 - Java 17
spring boot 3.3.1
패키징: Jar
의존성:Spring web

 

 

 

메이븐이란 자바프로젝트의 빌드를 자동화해주는 빌드 툴입니다.
개발 과정 중 많은 라이브러리들이 필요한데, pom.xml 파일에 라이브러리를 적어주면 따로 라이브러리들을 일일히 찾아서 받지않아도 메이븐이 알아서 네트워크를 통해 다운로드하고 경로까지 지정해줍니다.

아래는 pom.xml 캡처화면입니다.

<parent></parent>에 입력된 부분은 스프링부트 최상위 모듈로서,

스프링부트에 필요한 의존성(dependency)을 자동으로 추가합니다.

 

 

 

반응형

 

 

Spring Boot Devtools라는 애플리케이션 개발 시 유용한 기능들을 제공하는 모듈이 있습니다.

Spring Boot Devtools에서 제공하는 대표적인 기능

1. Automatic Restart: classpath에 있는 파일이 변경될 때마다 애플리케이션을 자동으로 재시작해줍니다. 개발자가 소스 수정 후 애플리케이션을 재실행하는 과정을 줄일 수 있으므로 생산성을 향상시킬 수 있습니다.
2. Live Reload: 정적 자원(html, css, js)수정 시 새로고침 없이 바로 적용할 수 있습니다.
3. Property Defaults: Thymeleaf는 기본적으로 성능을 향상시키기 위해 캐싱기능을 사용합니다. 하지만 개발하는 과정에서 캐싱 기능을 사용한다면 수정한 소스가 제대로 반영되지 않을 수 있기 때문에 cache의 기본값을 false로 설정할 수 있습니다.

 

 

위의 기능을 추가하려면 pom.xml에 spring-boot-devtools 의존성을 추가 후 "Reload All Maven Projects"을 클릭하여 의존성을 받아옵니다.

	... 생략 ...
    
    <dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
        
	... 생략 ...
    
    </dependencies>

 

 

 

File > SEttings - Build, Execution, Deployment  > Compiler 메뉴를 열어 

"Build project automatically"에 체크합니다.

 

 

 

 

 

그리고 Advanced Settings 메뉴에 들어가서

Allow auto-make to start even if developed application is currently running를 체크하고 

Apply, OK를 눌러줍니다.

책에는 registry를 열어 compiler.automake.allow.when.app.running를 체크하라고 되어있지만최신 intellij에는 compiler.automake.allow.when.app.running가 없어졌다고 합니다.

 

 

 

 

 

그리고 application.properties에 Live Reload를 적용하면 개발자가 직접 브라우저의 새로고침을 실행하지 않아도 

변경된 리소스가 웹 브라우저에 반영됩니다.

 

spring.devtools.restart.enabled = true
spring.devtools.livereload.enabled = true
spring.thymeleaf.cache = false

 

 

그다음 구글 크롬 웹 스토어에서 LiveReload++ 프로그램을 설치합니다.

책에는 LiveReload를 설치하라고 되어있지만 작동이 안되더군요..!!
https://chromewebstore.google.com/detail/livereload++/ciehpookapcdlakedibajeccomagbfab

 

LiveReload++

Watches a port and reloads the page if needed.

chromewebstore.google.com

 

 

 

설치 후에 우측상단 확장프로그램 목록에서 LiveReload++의 옵션 메뉴를 선택한 후에,

Port를 spring boot port 8080으로 바꿔주세요.

 

 

 

 

이제 애플리케이션을 실행시키면,

html파일을 수정하면 재실행하지 않더라도 변경된 내용이 웹 브라우저에 반영되는 것을 확인할 수 있습니다.

 

 

 

intellij에서 MAVEN 우측 상단 톱니바퀴 위에 마우스를 갖다대면, Build Tools Settings라고 툴팁이 뜨고,

Build Tools Settings > Maven Settings를 클릭해줍니다. 

 

 

 

 

 

Maven Settings 설정창에서 라이브러리들이 저장된 로컬 레파지토리 경로를 확인할 수 있습니다.

해당 경로로 들어가보면 라이브러리들이 다운받아져있습니다.

 

 

 

 

728x90

 

여러 프로젝트를 동시에 진행하면 메이븐 의존성이 서로 꼬일 수 있으므로 프로젝트별로 다른 폴더를 로컬 레파지토리로 지정하기를 권합니다.

 

 

 

 

src/main/resources/application.properties 파일은 포트설정 등 앱 실행 시 사용하는 여러 가지 설정값들을 정의하는 파일입니다. 개발 환경, 테스트 환경, 운영환경에 따라서 연결할 DB, PORT, debug level 등이 다르다면, 다음 명명규칙으로 설정 파일을 만듭니다.

application-{profile}.properties
1. 개발환경 설정파일: application-dev.properties
2. 운영환경 설정파일: application-prod.properties

 

 

application.propertie에 입력해놓은 값들은 자바파일에서 @Value 어노테이션으로 읽어올 수 있습니다.

여기까지 애플리케이션을 생성하고 설정하는 법에 대해 작성하였습니다.

 

 

다음 글을 읽으려면 아래링크를 눌러주세요!

[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -2. Controller, DTO(lombok)

 

[SpringBoot + JPA] tutorial: 스프링 부트 쇼핑몰 프로젝트 with JPA -2. Controller, DTO(lombok)

스프링 부트 쇼핑몰 프로젝트 with JPA 라는 책을 읽으며 정리한 내용입니다, 이미 스프링부트로는 개발을 많이 해보았으나 JPA를 공부하기 위해 이 책을 골랐습니다.     이전

domdom.tistory.com

 

728x90
반응형
댓글