안녕하세요.
이번엔 프로젝트(springboot) 구조에 대해서 공부해봅니다.
1. src/main/java
클래스, 인터페이스와 같은 Java 관련 파일들이 담기는 디렉터리입니다.
프로젝트를 생성하자 마자 안에 이미 들어가있는 Board1Application 클래스는 SpringApplication.run()을 호출하여 웹 애플리케이션을 실행합니다.
Board1Application 클래스를 보면 @SpringBootApplication 이라는 어노테이션이 있습니다.
저는 어노테이션이 생소한 관계로 어노테이션부터 공부해보도록 하겠습니다.
자바 어노테이션(Annotation)은 사전적 의미로 주석이라는 뜻을 가지고 있습니다. 컴파일 과정과 실행 과정에서 코드를 어떻게 처리해야 하는지를 알려주는 것이라고 생각하면 됩니다.
보통 앞에 @(골뱅이)를 붙여 사용합니다. 자바 시스템에서 제공하는 어노테이션이 많지만 필요에 따라 직접 생성하여 사용하는 것이 가능합니다.
따라서 @SpringBootApplication은 springboot 시스템에서 제공하는 어노테이션으로 생각됩니다.
@SpringBootApplication은 springboot의 자동 설정, Bean 읽기와 생성이 모두 자동으로 설정되는 어노테이션 입니다. (auto-configuration)
@SpringBootApplicaiont이 있는 위치부터 설정을 읽기 시작하기 때문에 이 어노테이션을 포함한 클래스는 항상 프로젝트 최상단에 위치해야 합니다.
@SpringBootApplication의 구조를 보면 3가지의 어노테이션을 포함하고 있습니다.
- @EnableAutoConfiguration (개발의 필요한 몇 가지 필수적인 몇 가지 설정들이 자동으로 완료됨)
- @CommponentScan (자동으로 컴포넌트 클래스 검색, IoC컨테이너에 Bean으로 등록)
- @Configuration (Java 기반의 설정 파일로 인식됨)
2. src/main/resource
- templates 폴더 : view와 관련된 파일 위치
- static 폴더 : css, fonts, images 등 정적 리소스 파일 위치
- application.properties : 웹 애플리케이션을 실행하면서 자동으로 로딩되는 파일 위치 (포트 번호 설정, 데이터베이스 관련 정보 등을 선언하여 처리)
3. src/test/java
폴더안에 Board1ApplicationTests클래스를 이용하여 개발 단계에 알맞은 단위 테스트를 진행할 수 있습니다.
(간편한 단위 테스트)
4. JRE System Library
Java로 개발하고 실행하는 데 필요한 Library의 class들이 들어있습니다.
5. Project and External Dependencies
추가된 라이브러리들이 들어있습니다.
6. Build.gradle
프로젝트 생성 시 제가 선택한 type은 gradle 입니다. 때문에 Build.gradle이 보이게 됩니다.
라이브러리 빌드 도구는 Maven과 Gradle 방식이 있습니다.
Maven은 porm.xml에서 여러 개의 dependency를 추가하여 라이브러리를 관리하는 방식입니다.
하지만 Maven은 하나의 라이브러리를 추가할 때에도 여러 줄의 코드를 작성해야 하는 번거로움이 있습니다.
그에비해 Gradle은 Maven보다 코드의 양도 적고, 더욱 간편하기 때문에 더욱 많이 사용되는 것 같습니다.
저는 Gradle을 이용하여 라이브러리를 관리해보도록 하겠습니다.
<MVC 패턴>
게시판 프로젝트를 시작하기 앞서, 이 프로젝트는 MVC 패턴으로 개발될 예정입니다.
MVC 패던에 대해서도 한 번 더 공부해보겠습니다.
MVC는 Model, View, Controller의 약자입니다.
- Model : 데이터(비즈니스 로직)를 처리하는 영역입니다. DB와 통신하고 데이터를 가공합니다.
- View : 화면단(UI) 영역입니다. 저는 HTML, 타임리프를 이용하겠습니다.
- Controller : 사용자가 웹에서 어떠한 요청을 하면, 가장 먼저 컨트롤러 영역으로 오게됩니다. 컨트롤러는 어떠한 로직을 호출하고, 호출한 결과를 전달하는 역할을 합니다.
예를 들어, 사용자가 게시판에 글을 작성하여 등록하면
컨트롤러는 글(데이터)를 전달받습니다.
그리고 모델 영역에 데이터 가공을 요청합니다.
모델 영역은 가공이 완료되면 전달받은 데이터를 데이터베이스에 저장하고, 저장의 결과를 컨트롤러에 전달합니다.
컨트롤러는 그 결과를 사용자에게(View) 전달합니다.
끗
참조 : https://hbase.tistory.com/169
참조 : https://congsong.tistory.com/13
참조 : https://coooding.tistory.com/33
참조 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=smduck&logNo=150163377378
'IT > 게시판 프로젝트' 카테고리의 다른 글
springboot 게시판 만들기 6 (게시글 리스트 조회 기능) (0) | 2023.04.14 |
---|---|
springboot 게시판 만들기 5 (게시글 등록 기능) (0) | 2023.04.14 |
springboot 게시판 만들기 4 (게시판 CRUD 처리) (0) | 2023.04.07 |
springboot 게시판 만들기 3 (MariaDB 연동) (0) | 2023.03.23 |
springboot 게시판 만들기 1 (프로젝트 생성) (0) | 2023.03.18 |