Docker起動・SpringBoot起動・DBへ接続

以前書いたDockerの起動方法について。

Docker 起動方法 - プログラミングMEMO

MariaDBにはいる - プログラミングMEMO




上の記事のまとめとプラスα。

dockerファイルへ移動。

cd spring-boot-jpa-sample
cd infra/docker/



docker machineが動いてるか確認。

docker-machine ls

Runningになっていれば、動いている。


もしなっていなければ、

docker-machine start default



これから打つコマンドはdockerに対するものだと指示。

eval "$(docker-machine env default)"



管理下にある全コンテナをまとめて起動。

docker-compose start


停止するには、

docker-compose stop



2つ前のディレクトリに移動(今回だとspring-boot-jpa-sampleに移動)。

cd ../../



spring bootを起動。

mvn clean spring-boot:run



DBに接続。

docker run -it --link sample-db01:mysql --rm mariadb sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

インターフェイスについて

そもそもインターフェイスとは

インターフェイスとは、クラスの骨格だけを記述したもの・そのメソッドの宣言だけをまとめたもの
インターフェイスを実装するときは、必ずそこにあるメソッドを実装しなくてはいけない。
継承とは異なり、implementsを使って実装する。
implementsでは、複数のクラスを指定することが出来る。




インターフェイスの定義

interface インターフェース名 {
    メソッド1(引数);
    メソッド2(引数);
    ...
}



インターフェイスの実装

class クラス名 implements インターフェイス1, インターフェイス2, ... {

    メソッド1(引数) {
        処理
    }

    メソッド2(引数) {
        処理
    }

    ...

}

MVCモデルとは

Model
View
Controller

の頭文字をとったもの。




Model

モデルは、システムの中でビジネスロジックを担当する、システムの本体部分
モデルは入出力や表示といった処理を行うことはできない。




View

ビューは、表示・入出力といった画面に関する部分を担当。





Controller

コントローラは、ViewとModelを制御する部分
コントローラでは表示を行ったり、ロジックの実行は行わず、
Viewからの入力に応じて、必要なロジックの実行をModelに依頼し、その結果表示をViewに依頼する。




MVCモデルの流れ

  1. ユーザがリクエスト

  2. Controllerが リクエストを受け取り、 Modelで処理するよう指示

  3. また、Controlerは、Viewに表示するするよう指示

  4. Modelでデータを処理する

  5. Viewが、 Modelから処理した表示したいデータを参照して、 レスポンスを返す

STS 再起動問題

STSでファイルの中身を変更するたびに、
アプリケーションを再起動させてからじゃないと実行できなかったのでその解消法を調べてみた。



pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
</dependencies>

を加えるだけ。

APIとは

Application Program Interfaceの略。

簡単に言うと、API特定の機能を持つプログラム部品
いろいろな機能があるAPIから、必要なAPIを探し出し組み合わせるだけで、プログラムができる。
よく使われる命令をAPIにしてみんなで共有してしまえば、非常に効率的に作業が出来る。

3階層システム・ビジネスロジックとは

3階層システム

3階層システムとは、クライアントサーバシステムをプレゼンテーション層・アプリケーション層・データ層 の3層に分割して構築したシステム。
クライアントおよびサーバの処理を複数の階層に分離して配置することで、ある階層へ変更を加える必要が生じた際にも柔軟に対応できるようなっている。

3階層システムでは、システム全体をプレゼンテーション層(ユーザインターフェース)・アプリケーション層(ビジネスロジック)・データ層(データベース)の3階層に分け、クライアント側にはユーザインターフェース部分のみを残し、あとはサーバ側に実装する。
クライアントはユーザからの操作を受け付け、アプリケーション層からの処理結果を表示することのみを行う。




クライアントサーバーシステム

クライアントサーバシステムとは、コンピュータをサーバとクライアントに分け、役割分担をして運用する仕組みのこと。
クライアントはサーバに対して「このデータを送ってほしい」という要求をし、それに対してサーバは要求されたデータを送る、といったことを行う。




ビジネスロジック

ビジネスロジックとは、業務ソフトウェアの中で、具体的な業務で扱う様々な実体(商品、顧客、在庫など)を表現し、また、それらの関係や処理の方法、業務の流れなどをプログラムコードとして実装した部分。
アプリケーション固有の処理やルールを記述したもの。

3階層システムでは、プレゼンテーション層(ユーザインターフェース層)とデータアクセス層(データベース層)の中間に位置し、ビジネスロジック層あるいはアプリケーション層と呼ばれる。