JPA/기초 공부

12. Spring Boot 프로젝트의 구조

pakms980319 2024. 2. 16. 10:50

Spring Boot 프로젝트 구조


1. Java Resources

 

1) src/main/java

자바 파일을 저장하는 공간이다.

 

1-1) *Application.java

*Application.java

 

[프로젝트명 + Application.java] 파일은 스프링 부트 프로그램의 시작을 담당하는 파일이다.

이 java 파일의 클래스 *Application에는 반드시 @SpringBootApplication 어노테이션이 적용되어있어야 한다.

@SpringBootApplication 어노테이션을 통해 스프링 부트 애플리케이션을 시작할 수 있다.

 

1-2) ServletInitializer.java

ServletInitializer.java

 

이전 프로젝트 설정에서 배포 방식을 War로 설정했었기 때문에 생성된 파일이다.

 

Spring 웹 애플리케이션을 외부 Tomcat에서 동작하도록 하기 위해서는 web.xml에 애플리케이션 컨텍스트를 등록해야만 한다.이는 Apache Tomcat(Servlet Container)이 구동될 때 /WEB-INF 디렉토리에 존재하는 web.xml을 읽어 웹 애플리케이션을 구성하기 때문이다.

 

하지만 Servlet 3.0 스펙으로 업데이트되면서 web.xml이 없어도 동작이 가능해졌다. 이는, web.xml 설정을 WebApplicationInitializer 인터페이스를 구현하여 대신할 수 있게 됐기 때문이다.

 

ServletInitializer 클래스는 SpringBootServletInitializer을 상속받고 있는데, web.xml이 없는 SpringBoot 웹 애플리케이션을 외부 Tomcat에서 동작하도록 하기 위해서는 WebApplicationInitializer 인터페이스를 구현한 SpringBootServletInitializer를 상속 받는 것이 필요했던 것이다.


2) src/main/resources

src/main/resources

 

자바 파일을 제외한 HTML, CSS, 자바스크립트, 환경 파일 등을 저장하는 공간이다.

 

2-1) templates 디렉터리

템플릿 파일을 저장한다.

하지만 스프링 부트의 spring-boot-starter-web에 포함된 tomcat은 JSP 엔진을 포함하고 있지 않다.

그래서, jsp 파일은 templates 디렉터리 안에서 작동하지 않는다.

 

jsp 파일을 사용하고 싶다면 의존성을 추가하고, 뷰 경로를 지정해야 하는데 이후 사용하게 된다면 새로운 글을 작성하겠다.

https://devlog-wjdrbs96.tistory.com/199

 

[Spring Boot] 스프링부트에서 JSP 사용하는 법

이번 글에서는 스프링 부트에서 jsp를 사용하기 위해 설정하는 법에 대해서 정리하려 한다. spring-boot-starter-web 에 포함된 tomcat 은 JSP 엔진을 포함하고 있지 않다. jsp 파일은 Springboot 의 templates 폴

devlog-wjdrbs96.tistory.com

 

2-2) static 디렉터리

스타일시트(css), 자바스크립트(js), 그리고 이미지 파일(jpg 파일, png 파일 ...) 등을 저장한다.

 

2-3) application.properties 파일

프로젝트의 환경 변수, 데이터베이스 설정 등을 저장한다.


3) src/test/java

src/test/java

 

테스트하는 코드를 저장하는 공간이다. JUnit과 스프링 부트의 테스트 도구를 사용하여 서버를 실행하지 않은 상태에서 src/main/java 디렉터리에 작성한 코드를 테스트할 수 있다.

  • JUnit은 테스트 코드를 작성하고, 작성한 테스트 코드를 실행할 때는 자바의 테스트 프레임워크를 사용한다.

3-1) *Tests.java

*Tests.java

 

@SpringBootTest 어노테이션과 @Test 어노테이션이 사용되어있다.

 

@SpringBootTest는 모든 Bean들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 실행한다.

@Test는 JUnit 프레임워크에서 테스트 메서드를 지정하는데 사용된다.


4) Libraries

 

여러 라이브러리(*.jar) 파일이 들어가있다.

추가했던 여러 dependencies도 여기에 있다.


2. src

src

 

Java Resources에 있던 main과 test 폴더에 접근할 수 있다.

 

main과 test

 


3. pom.xml

pom.xml

pom.xml은 프로젝트의 의존성 관리와 버전관리를 위한 설정을 작성한다.

 

<parent>

 

parent 태그에 있는 spring-boot-starter-parent인데

spring-boot-starter-parent

 

이 파일의 <parent>에는 spring-boot-dependencies가 있다.

 

spring-boot-dependencies

 

spring-boot-dependencies의 properties 속에 수 많은 dependency에 대한 버전 정보가 기록되어있다.

또한, dependencies에 여러 dependency가 자동으로 등록되어 있는데 이 덕분에 Spring Boot에서 dependency에 대한 버전 명시가 필요하지 않고 적은 의존성 추가로도 여러 의존성을 한번에 주입 받을 수 있다.


출처

 

https://serverwizard.tistory.com/165

 

SpringBootServletInitializer 란 무엇이고 왜 상속받고 있는가?

주제 선정 이유 아래 소스는, 현재 담당하고 있는 서비스의 코드를 그대로 가져온 것이다. @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void main(String[] args) { Spr

serverwizard.tistory.com

 

'JPA > 기초 공부' 카테고리의 다른 글

0. Spring Boot DB 설정하기  (0) 2024.02.16
0. DBeaver 설치  (0) 2024.02.16
11. Spring Boot  (0) 2024.02.16
10. JAR vs WAR 배포의 차이  (1) 2024.02.06
9. Lombok 테스트 실습  (0) 2024.02.06