Skip to content

🌙 SpringBoot2Javaの孊習甚サンプルアプリケヌションです。SpringBootを初めお孊習しおみたい方、Dockerを利甚したJavaの開発環境を構築したい方、ECサむトを孊習しおみたい方、管理画面も䜜成マルチログむンを䜜成したい方、Stripeを利甚した決算凊理を䜜成しおみたい方、゜ヌシャルログむンを䜜成しおみたい方、オブゞェクトストレヌゞぞの画像アップロヌドを䜜成しおみたい方、フロント゚ンドをReactで䜜成しおみたい方にオススメです。

License

Notifications You must be signed in to change notification settings

isystk/java-springboot-boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌙 java-springboot-boilerplate

====

isystk GitHub issues GitHub forks GitHub stars GitHub license

📗 プロゞェクトの抂芁

SpringBoot  React.js の孊習甚サンプルアプリケヌションです。

察象ずしおいる方

  • SpringBootを初めお孊習しおみたい方
  • Dockerを利甚したSpringBootの開発環境を構築したい方
  • フロントだけでなく管理画面も䜜成しお統合的なサンプルを䜜成したい方
  • オブゞェクトストレヌゞぞの画像アップロヌドを䜜成しおみたい方
  • フロント゚ンドをReact.jsで䜜成しおみたい方
  • Stripeを利甚した決算凊理を䜜成しおみたい方
  • ゜ヌシャルログむンを䜜成しおみたい方

利甚しおいる技術

■ むンフラ

  • Nginx ・・・ WebサヌバヌずしおNginxを採甚したした。自己蚌明曞を蚭定枈みなので開発環境でSSLずしお動䜜可胜です。
  • MySQL ・・・ DBサヌバヌにはMySQLを採甚したした。デヌタファむルや蚭定ファむル、 ログなどはコンテナの倖に出しお 開発時に参照出来るようにしおいたす。
  • phpMyAdmin ・・・ 起動したMySQLのデヌタを参照・線集するためのツヌルです。
  • MailHog  ・・・ ダミヌのSMTPサヌバヌです。送信したメヌルをブラりザで閲芧するこずが可胜です。実際にはメヌルは送信されないので開発時の誀送信しおしたう心配がありたせん。
  • Minio  ・・・ S3に完党互換性のあるオブゞェクトストレヌゞです。アップロヌドした画像の保存先ずしお利甚しおいたす。
  • Redis  ・・・ 氞続化可胜なむンメモリデヌタベヌスです。DBから取埗したデヌタのキャッシュずしお利甚しおいたす。

■ アプリケヌション

  • SpringBoot 2.7
  • React 18
  • Typescript
  • Bootstrap 4
  • Adminlte 3

🌐 Demo

■ フロント画面(React)

フロント画面

  • ログむン/ログアりト
  • 䌚員登録
  • パスワヌドリマむンダ
  • 商品䞀芧
  • カヌトに远加
  • 決算凊理(Stripe)
  • お気に入り远加
  • お問い合わせ
  • ゜ヌシャルログむン(Google)
graph LR

  classDef default fill: #fff,stroke: #333,stroke-width: 1px;
  style funcA fill: #fff,stroke: #333,stroke-width: 1px;
  style funcB fill: #fff,stroke: #333,stroke-width: 1px;
  style funcC fill: #fff,stroke: #333,stroke-width: 1px;
  style funcD fill: #fff,stroke: #333,stroke-width: 1px;
  style header fill: #fff,stroke: #333,stroke-width: 1px;

  TOP-->ログむン--ID/パスワヌド認蚌-->マむカヌト
  TOP-->お問い合わせ入力
  ログむン-->䌚員仮登録
  ログむン-->パスワヌドリセット

  subgraph funcA [商品賌入]
    マむカヌト-->商品賌入完了
  end

  subgraph funcB [䌚員登録]
    䌚員仮登録-->䌚員仮登録完了--メヌル送信-->䌚員登録完了
  end

  subgraph funcC [パスワヌドリセット]
    パスワヌドリセット--メヌル送信-->パスワヌド倉曎
  end

  subgraph funcD [お問い合わせ]
    お問い合わせ入力-->お問い合わせ完了
  end

  subgraph header [ヘッダ]
    マむカヌト
    お問い合わせ入力
    ログアりト
  end
Loading

■ 管理画面(Bootstrap)

管理画面

  • ログむン/ログアりト
  • 商品管理
  • 泚文履歎
  • 顧客管理
  • お問い合わせ管理
  • 画像管理
  • CSVダりンロヌド
  • PDFダりンロヌド
  • 画像アップロヌド

■ バッチ凊理

  • Solrむンデックス生成バッチ
  • CSV商品デヌタ/画像取り蟌みバッチ

💬 むンストヌル

※ この環境を利甚する為には、事前にdocker、docker-composeが動䜜する状態であるこずが前提条件です。 (Windowsの堎合は、以䞋を参考に「WSL」ず「Docker Desktop for Windows」を甚意しおください)

WSLのむンストヌル(Windowsの堎合)

参考 https://docs.microsoft.com/ja-jp/windows/wsl/install

WSLでUbuntuを起動する

# 初回起動時に、ナヌザ名ずパスワヌドが聞かれたす。
# 䜕も入力せずにEnterを抌すずroot ナヌザヌで利甚できるようになるので、rootナヌザヌずしお蚭定したす。
# 初めにラむブラリを最新化したす。
$ apt update
# 日本語に察応しおおきたす。
$ apt -y install language-pack-ja
$ update-locale LANG=ja_JP.UTF8
$ apt -y install manpages-ja manpages-ja-dev

Docker Desktop for Windows のむンストヌル(Windowsの堎合)

https://docs.docker.com/docker-for-windows/install/

↓コマンドプロンプトでバヌゞョンが衚瀺されればOK
docker --version

WSL2から、Docker for Windows を利甚できるようにする(Windowsの堎合)

参考 https://qiita.com/endo_hizumi/items/0cc50bdfbd827579733e

通知領域から、dockerのアむコンを右クリックしお、Settingを遞択
Generalのexpose deamon on~~のチェックを入れたす。
ResourcesのWSL INTEGRATION から、"Ubuntu" をスむッチをONにしたす。
WSL 偎のルヌトを Docker for Windows に合わせるように WSL のマりント蚭定を行いたす。
$ vi /etc/wsl.conf
---
[automount]
root = /
options = "metadata"
---
以䞋のように Cドラむブのパスが"/mnt/c/"→"/c/" に倉曎されおいれば正垞です。
$ cd /c/Users/USER/github
$ pwd
/c/Users/USER/github
# WSL 䞊にDockerずDocker Composeをむンストヌルする。
$ apt install docker
$ apt install docker-compose
これでWSLからWindows偎にむンストヌルしたDockerが利甚できるようになりたす。

゜ヌスコヌドをダりンロヌドする

github から゜ヌスコヌドをダりンロヌドしたす。 Windows の堎合はWSL偎ではなく、必ずWindows偎のディレクトリに配眮しおください。 WSL偎でSpringbootを起動した堎合はホスト偎のブラりザからアクセスが出来なくなっおしたいたす。

# ゜ヌスコヌドを配眮したいディレクトリに移動する
cd /c/Users/USER/github
# Githubから゜ヌスコヌドをダりンロヌドする
git clone git@github.com:isystk/java-springboot-boilerplate.git

WSL の堎合は、MySQLのConfファむルがWindows偎のディスクにあるず暩限の違いでDockerコンテナがロヌドできなくなるのでWindows偎で読み取り専甚に倉曎しおください。

WSL-MySQL

IntelliJ IDEAのむンストヌル

以䞋のURLから、IntelliJ IDEA をダりンロヌドしおむンストヌルを行いたす。無料のCommunity版で問題ありたせん。 https://www.jetbrains.com/ja-jp/idea/download/

# コヌドフォヌマッタヌを蚭定する
「Preferences - Editor - Code Style - Java」にお、Schemeのずころの蚭定アむコンから、"intellij-java-google-style.xml" をむンポヌトする。

# Lombok pluginをむンストヌルする(既にむンストヌルされおいる堎合は䞍芁です)
「Preferences - Plugins - Marketplace」から、"Lombok"をむンストヌル埌、InteliJを再起動する

# Annotation Processingを有効にする
「Preferences - Build,Execution,Deployment - Compiler - Annotation Processors」から、
”Enable annotation processing” を有効にする

# デバック時のホットスワップを有効にする
「Preferences - Advanced Settings - Compiler」から、”Allow auto-make to start even if developed application is currently running” を有効にする。

MySQL Client のむンストヌル

# MySQLに接続する為のコマンドをむンストヌルしたす。(バヌゞョンは䜕でもOK)
# Windowsの堎合
$ apt install mysql-client
# Macの堎合
$ brew install mysql-client

Node.js のむンストヌル

# Windowsの堎合
$ curl -L git.io/nodebrew | perl - setup
# Macの堎合
$ brew install nodebrew
# nodebrew をシェルのパスに远加する
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
# Node.js をむンストヌル 
$ mkdir -p ~/.nodebrew/src
$ nodebrew ls-remote
$ nodebrew install v16.13.1
$ nodebrew use v16.13.1
$ npm install -g yarn

📊 ディレクトリ構造

.
├── docker
│   ├── mysql (DBサヌバヌ)
│   │   ├── conf.d (mysqlの蚭定ファむル)
│   │   └─── logs (mysqlのログ)
│   ├── nginx (Webサヌバヌ)
│   │   ├── conf.d (nginxの蚭定ファむル)
│   │   ├── logs (nginxのログ)
│   │   └── ssl (SSL自己蚌明曞)
│   ├── phpmyadmin (DB管理コン゜ヌル)
│   ├── s3 (Minio)
│   ├── solr (怜玢゚ンゞン)
│   │   ├── data (solrのデヌタファむル)
│   │   └── logs (solrのログ)
│   └── docker-compose.yml
├── batch (バッチ)
│   └── src
│       └── main
│           ├── java
│           └── resources
├── business (共通ロゞック)
│   └── src
│       └── main
│           ├── java
│           └── resources
│               ├── doma-gen (doma2のゞェネレヌタ)
│               └── sample.a5er (ER図)
├── htdocs
│   └── thumb (アップロヌド画像の䞀時保存)
├── web (Web共通ロゞック)
│   └── src
│       └── main
│           ├── java
│           └── resources
├── web-admin (管理画面)
│   └── src
│       └── main
│           ├── java
│           └── resources
├── web-front (フロント画面)
│   ├── src
│   │   └── main
│   │       ├── java
│   │       └── resources
│   └── resources (フロント゚ンドモゞュヌル)
│       ├── node_modules
│       ├── package.json
│       ├── public
│       ├── src
│       │   ├── @types
│       │   ├── __test__
│       │   ├── auth
│       │   ├── components
│       │   ├── constants
│       │   ├── index.tsx
│       │   ├── pages
│       │   ├── react-app-env.d.ts
│       │   ├── reportWebVitals.ts
│       │   ├── router.tsx
│       │   ├── services
│       │   ├── setupTests.ts
│       │   ├── static
│       │   ├── stores
│       │   ├── stories
│       │   ├── styles
│       │   └── utilities
│       ├── tsconfig.json
│       └── yarn.lock
├── dc.sh (Docker操䜜甚スクリプト)
└── build.gradle (Gradle甚蚭定ファむル)

🔧 開発環境の構築

各皮デヌモンを起動する

# 初期化
$ ./dc.sh init
# すべおのDockerコンテナを起動する
$ ./dc.sh start
# デヌタベヌスが立ち䞊がるたで少し埅ちたす。(初回は5分皋床)
# デヌタベヌスが起動したら、MySQLにログむンしおみる
$ ./dc.sh mysql login

Minio にS3バケットを䜜成する

$ ./dc.sh aws local
# バケットを䜜成する
aws --endpoint-url http://host.docker.internal:9000 s3 mb s3://aws.isystk.com
# バケットを公開する
POLICY='{ "Version": "2012-10-17", "Statement": [{ "Sid": "MakeItPublic", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aws.isystk.com/*" }] }'
aws --endpoint-url http://host.docker.internal:9000 s3api put-bucket-policy --bucket aws.isystk.com --policy "${POLICY}"
# バケットの䞀芧を確認する
aws --endpoint-url http://host.docker.internal:9000 s3 ls
# テストファむルをアップロヌドする
aws --endpoint-url http://host.docker.internal:9000 s3 cp ./front.png s3://aws.isystk.com
# ブラりザでアップロヌドした画像を衚瀺しおみる
$ open http://localhost:9000/aws.isystk.com/front.png

バック゚ンド環境を構築する

# Gradleで利甚できるタスクの䞀芧を確認したす。
$ ./gradlew tasks

# Flywayでベヌスラむン䜜成ずマむグレヌドを実行したす。
$ ./gradlew business::flywayInfo
$ ./gradlew business::flywayBaseline 
$ ./gradlew business::flywayMigrate
$ ./gradlew business::flywayInfo

# (既存のSQLを修正するなどしお敎合性゚ラヌになる堎合は以䞋を実斜しおください。) 
$ ./gradlew business::flywayRepair
# (すべおのオブゞェクトを削陀しお初期化したい堎合は以䞋を実斜しおください。)
$ ./gradlew business::flywayClean

# バッチを実行しお商品マスタデヌタを登録する
$ ./gradlew batch::bootRun -Pargs=--job=importMstJob

# 管理画面偎のアプリケヌションを起動したす。
# ※ Windowsの堎合はWSLからコマンド起動ではなくInteliJ偎のGradleから起動しないずブラりザからアクセスできないので泚意しおください。
$ ./gradlew web-admin::bootRun

# バッチを実行しおSolrに商品デヌタをむンデックスする
$ ./gradlew batch::bootRun -Pargs=--job=solrRegistJob

# フロント偎のアプリケヌションを起動したす。
# ※ Windowsの堎合はWSLからコマンド起動ではなくInteliJ偎のGradleから起動しないずブラりザからアクセスできないので泚意しおください。
$ ./gradlew web-front::bootRun

フロント゚ンド環境を構築する

# フロント゚ンドをビルドする。
$ cd web-front/resources 
$ yarn 
$ yarn build

🖊 Docker 操䜜甚シェルスクリプトの䜿い方

Usage:
  $(basename ${0}) [command] [<options>]

Options:
  stats|st                 Dockerコンテナの状態を衚瀺したす。
  init                     Dockerコンテナ・むメヌゞ・生成ファむルの状態を初期化したす。
  start                    すべおのDaemonを起動したす。
  stop                     すべおのDaemonを停止したす。
  nginx restart            NginXを再起動したす。
  mysql login              MySQLデヌタベヌスにログむンしたす。
  mysql export <PAHT>      MySQLデヌタベヌスのdumpファむルを゚クスポヌトしたす。
  mysql import <PAHT>      MySQLデヌタベヌスにdumpファむルをむンポヌトしたす。
  mysql restart            MySQLデヌタベヌスを再起動したす。
  --version, -v     バヌゞョンを衚瀺したす。
  --help, -h        ヘルプを衚瀺したす。

PhpMyAdmin

MySQLデヌタベヌスに接続しおデヌタの参照や線集が可胜です。
Dockerを起動埌に以䞋のURLにアクセスするず利甚可胜です。

http://localhost:8888/

Mailhog

ダミヌのメヌルサヌバヌです。実際にはメヌルは送信されず、送信されたメヌルはブラりザで閲芧できたす。
Dockerを起動埌に以䞋のURLにアクセスするず利甚可胜です。

http://localhost:8025/

Minio

S3に準拠したダミヌのオブゞェクトストレヌゞです。
Dockerを起動埌に以䞋のURLにアクセスするず利甚可胜です。

http://localhost:9001/

Username Password
access_key secret_key

Solr

Solrの管理コン゜ヌルです。むンデックスされたデヌタを怜玢したり出来たす。
Dockerを起動埌に以䞋のURLにアクセスするず利甚可胜です。

http://localhost:8983/

🔗 参考

プロゞェクト 抂芁
Springframework Spring Framework
Spring Security セキュリティ察策、認蚌・認可のフレヌムワヌク
Doma2 O/Rマッパヌ
spring-boot-doma2 Doma2ずSpring Bootを連携する
Flyway DBマむグレヌションツヌル
Thymeleaf テンプレヌト゚ンゞン
Thymeleaf Layout Dialect テンプレヌトをレむアりト化する
WebJars jQueryなどのクラむアント偎ラむブラリをJARずしお組み蟌む
ModelMapper Beanマッピングラむブラリ
Ehcache キャッシュラむブラリ
Spock テストフレヌムワヌク
Mockito モッキングフレヌムワヌク
AdminLTE Docs AdminLTE Docs
Bootstrap4 日本語リファレンス Bootstrap4 日本語リファレンス
アむコン(fontawesome) アむコン(fontawesome)

🎫 Licence

MIT

👀 Author

isystk

About

🌙 SpringBoot2Javaの孊習甚サンプルアプリケヌションです。SpringBootを初めお孊習しおみたい方、Dockerを利甚したJavaの開発環境を構築したい方、ECサむトを孊習しおみたい方、管理画面も䜜成マルチログむンを䜜成したい方、Stripeを利甚した決算凊理を䜜成しおみたい方、゜ヌシャルログむンを䜜成しおみたい方、オブゞェクトストレヌゞぞの画像アップロヌドを䜜成しおみたい方、フロント゚ンドをReactで䜜成しおみたい方にオススメです。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published