작성일자 : 2021 . 08. 15 일요일

개발도구 : STS 4.1.0

 

개인 정리용으로 작성한 글이라 틀린부분이 많을 수 있습니다 ~~

 

 

SpringBoot 프로젝트의 폴더 구조

 

 

 

 

 


1.  src/main/java 

스프링 프레임워크!! 라고 하면 필수적으로 나오는게 MVC 구조인데요 그 중 Model, Controller 를 저장하는 곳입니다.

 

처음 Spring Stater Project를 생성하면 

기본 패키지명 "com.example.demo" 와 하위 java파일 "[프로젝트명]Application.java" 가 있습니다.

( TestController.java 는 제가 임의로 만든파일 )

그리고 패키지명은 보통 자기가 만들 도메인이나 회사명이나 등등을 거꾸로 쓴다고 하네요.

예를들면 com.naver.webtoon     (?)

 

 

자동으로 만들어진 자바파일 입니다~ 메인함수에 run 함수 하나만 달랑 있는 아주 간단한 파일이네요

프로젝트를 SpringBootApp 으로 실행시키면 이 함수가 호출이 되겠군요 

 

만들어진 패키지 하위에서 작업을 하셔야 위와 같은 main함수를 찾아내기 때문에 작업하실 때 번거롭지 않습니다!!

굳이 다른패키지에서 하고싶으시다면 자세한 내용은 @ComponentScan 어노테이션을 찾아보시기 바랍니다 ~

 


2. src/main/resources

서버가 실행될 때 필요한 파일들을 저장하는 공간입니다.

기본적으로 application.properties 라는 환경설정 파일이 만들어져있을텐데

properties 보다 yml 확장자의 문법이 좀 더 가독성이 좋기때문에 저는 파일이름을 변경하여 yml 로 변경한 상태입니다

 

 

 

application.properties 문서

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.server

 

 

 

더욱 공부하게 된다면 java 파일에서 환경설정에서 세팅한 값을 불러와서 사용할 수 있다고 하네요

( 예를들면 테스트서버 / 실제 운영서버의 세팅 값 )

 


3. src/main

/webapp/WEB-INF/views

MVC 구조에서 Views 를 저장하는 곳입니다.

 

Spring 에서는 jsp 파일을 사용하려면 필수로 설정 해야할게 몇 가지 있습니다.

파일경로를 줄바꿈으로 차별을 준 이유는 프로젝트를 처음 만들면 src/main 밖에 없어서 그 하위의

/webapp/WEB-INF/views 는 직접 폴더를 생성해주셔야 하기때문입니다.

 

 

왜 하필 경로는  /webapp/WEB-INF/views  고정이어야 하나요?

나중에 pom.xml 에 추가해야할 tomcat-embed-jasper 라이브러리와  application.yml 에서 추가해야할 prefix

와 관련이 있습니다 

 

pom.xml 에 추가해야할 tomcat-embed-jasper

pom.xml에 관한 내용은 마지막에 설명하겠습니다 !! 의존성관리하는 파일 이라고만 알아두세요 ~

<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
		<dependency>
		    <groupId>org.apache.tomcat.embed</groupId>
		    <artifactId>tomcat-embed-jasper</artifactId>
		    <version>9.0.40</version>
		</dependency>

 

pom.xml을 변경하고 난 뒤에는 Project Clean 하는거 잊지마세요 ~

아무리해도 추가한 라이브러리가 인식이 안된다면 서버를 재시작 해보세요 !!!

 

 

application.yml 에서 추가해야할 prefix

prefix 와 suffix 는 각각 접두어, 접미어 라는 뜻을 지니고 있는데요

tomcat-embed-jasper 에서 jsp 파일에 접근하는 경로가 src/main/webapp 까지였는데

 

yml 파일에서 접두어 접미어 설정을 미리 해둔다면

여기에 접두에 /WEB-INF/views/ 가 붙게 되고 접미에 .jsp 가 붙게됩니다.

 

그런데 어디의 접두 접미 라는것일까요?

바로 Controller 에서 return 하는 View의 이름입니다.

yml 파일에 prefix , suffix 가 없다면 index2 함수처럼 view의 전체경로와 확장자를 모두 입력해줘야 합니다.

 

하지만 yml 파일에 prefix,  suffix 가 설정되어 있다면 !!!

index 함수처럼 view 의 파일이름만 반환하면 알아서 찾아가게 됩니다.

 

이 부분이 더 궁금하시다면 ViewResolver 를 찾아보시면 될 것 같습니다!

 

 

 

4. pom.xml

pom.xml 에 필요한 라이브러리를 작성하면 프로젝트 빌드시에 자동으로 다운로드받아 관리해주는 파일입니다.

맨 처음 프로젝트 생성할 때

pom.xml 파일이 없으시다면 의존성 관리타입을 Maven 으로 해주셔야 합니다 !!

이 외의 타입으로는 Gradle 이 있는데 관리방법과 사용빈도도 Maven이랑 거의 비슷해서 자신에게 맞는 관리도구를 사용하시면 됩니다.

 

그리고 자신이 원하는 라이브러리를 검색하여 즉시 추가할 수 있습니다.

제가 알고있는 스프링 개발에 반드시필요한 라이브러리는

Spring Web

Spring Web Services 이고요 ( 전반적인 스프링 기능이 다 담겨있어서 자세하게는 어떤 기능이 있는지 잘 모르겠습니다)

 

SpringBoot Dev Tools : 프로젝트의 파일 변겅후 저장을 감지하여 서버를 자동으로 재실행 해줍니다 (편의성)

 

이 외에 자주 쓰이므로 공부하면 도움이되는 라이브러리들은 

MySQL , MyBatis , OAuth2.0 , Security , JPA .. 가 있습니다 !!

 

 

 


'프로젝트 구조' 만 설명하려고 했는데 자꾸 뭐라도 더 쓰고싶다는 생각에 정보를 계속 눌러담은 느낌이 드네요 .

꾸준히 정리 해보겠습니다.

+ Recent posts