Instagram Clone Coding Backend 1プロジェクトの起動
5158 ワード
🔨 プロジェクトの作成
🔍 Spring Initializr
spring initializr
上のサイトでスプリング起動アイテムを簡単に作成できます.
Maven vs Gradle
プロジェクトを管理するツールとして、MavenはXML、GradleはGroovyのようなJava言語に基づいて構築処理を記述します.最近はGradleが流行りだそうです.このプロジェクトではGradleを使用しました.
Dependency
Spring Web、JPA、MySQL Driver、Securityなど必要なライブラリを追加しました.
このほか、言語、Spring Bootバージョン、およびプロジェクト情報を入力すると、プロジェクトが作成されます.
🔍 IntelliJで作成
Spring Initializerのほか、IntelliJでもプロジェクトを作成できます.Gradleプロジェクトを作成し、構築します.gradleで設定すればいいです
まず、以下のコードを構築します.gradleの前半に追加します.
buildscript {
ext {
springBootVersion = 'SPRING BOOT VERSION'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-bootgradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
まずbuildscriptを表示し、extはグローバル変数を設定し、リポジトリはどのリモート・リポジトリから様々な依存性(ライブラリ)を受信するかを決定します.基本的にはMavenCentralがよく使われています.依存項目は、プロジェクト開発に必要な依存性を宣言する場所です.これはspring-boot-gradle-pluginの構成済みバージョン(springbootVERSIONに入れる)を依存性として取得することを意味する.
apply pluginセクションは、先に宣言したプラグイン依存性を適用するかどうかを決定するコードです.
検索するとbuildscriptとapply plugin部分はpluginsブロックで簡単に表すことができることが分かった.(注:https://doughman.tistory.com/19)
最後に、dependenciesセクションに必要な依存性を宣言します.
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-startertest')
}
他に必要な依存性がある場合は、追加します.書き終わったら変更を反映する.
実行プロジェクト
🔍 IntelliJで実行
簡単にmainmethodを実行すればいいです.
🔍 ターミナルで実行
プロジェクトフォルダに移動し、次のコマンドを実行します.(構築後、生成されたプロジェクトjarファイルを実行)
./gradlew clean build
java -jar build/libs/instagram-backend-0.0.1-SNAPSHOT.jar
💻 Web開発方法
スプリングを用いたWeb開発では,以下の3つの手法を用いることができる.
静的コンテンツ
静的htmlファイルのみ送信します.
htmlファイルをプロジェクトのresources/staticフォルダに格納し、ローカルでサーバを回転させる場合、localhost:8080/ファイル名.htmlで実行できます.
MVC
アプリケーションをモデル、ビュー、コントローラの3つの部分に分けます.ビューは画面出力、モデルはデータ加工、コントローラはモデルとビューを担当します.
API
データをjsonなどのファイルとしてclientに渡す方法.
🔍 Webプレゼンテーション方式
ブラウザは、HTML、CSS、Javascriptなどのファイルを受信して画面に表示します.
画面に表示されると、サーバは完全に生成されたHTMLページを送信するSSR方式と、Javaスクリプトファイルを受信してDOMを動的にレンダリングし、クライアント(ブラウザ)上で解析してレンダリングするCSR方式がある.
SSR (Server-Side Rendering)
これは、サーバからhtmlファイルを完全に取得し、ページ全体をレンダリングする方法です.
JSP、サーブレットなどもこの方式と呼ばれています.
Browser <-> Web Server <-> Database
react,Angular,Viewなどの1ページアプリケーション(SPA)フレームワークの発展に伴い,大量のCSR方式が用いられているが,CSR方式の欠点から,最近は多くのSSR方式が用いられている.(Browser <-> Frontend <-> Backend <-> Database)
CSR (Client-Side Rendering)
ユーザの要求に応じて必要な部分だけをレンダリングする方法.
最初は、HTMLファイルとともに動的にレンダリングするJavascriptファイルがサーバから送信されます.クライアントがファイルを受信すると、JSファイルはユーザのインタラクションに応じて動的にレンダリングされ、他に必要なデータがあればサーバにデータを要求して受信し、これらに基づいてHTMLを動的に生成することができる.
Browser <-> Frontend Server
Browser <-> Backend Server (API Server) <-> Database
Javascriptファイルを初めて送信する場合は、アプリケーションに必要なロジックだけでなく、ドライバアプリケーションのフレームワークやライブラリのソースコードも含まれます.そのため、初期ロードには時間がかかる場合があります.
このInstagramクローンプロジェクトでは、フロントエンドにReactを使用し、バックエンドにAPIサーバを作成して画面に必要なデータを送信します.
📁 プロジェクト構造
プロジェクトの構造については、多くの本を参考にした.
ソース:Spring BootとAWSによる個別Webサービス
Web Layer
ビューテンプレート領域
Service Layer
サービスエリア
Repository Layer
Domain Model
Dtos
整理するとこのような流れがあります.
簡単に言えば、
4種類に分けることができます.
これに基づいて、基本的なフォルダ構造は次のとおりです.
├── domain
├── service
└── web
├── controller
└── dto
ここで、entityと対応するrepositoryをdomainフォルダに配置します.実はプロジェクト構造は最初は文字だけで見ていたので、あまり理解していなかったので、例を見たときはこうやって使っていると思っていたので、次回は理解して整理してみるのもいいかもしれません.
Reference
この問題について(Instagram Clone Coding Backend 1プロジェクトの起動), 我々は、より多くの情報をここで見つけました https://velog.io/@h000/Instagram-Clone-Coding-Backend-1-프로젝트-시작하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol