プロジェクトは積極的に維持されなくなりました。代わりに販売注文システム2.0を参照してください
これは、サンプルとして使用され、純粋なデモンストレーションの目的である非常に小さなフルスタックWebアプリケーションです。
git clone https://github.com/colinbut/sales-order-system.git
mvn clean package
...ソースをコンパイルし、戦争ファイルをパッケージ化します
オンラインアプリケーションディレクトリに移動し、次のコマンドを実行します。
mvn tomcat7:run-war
Maven Tomcat7プラグインを使用して、埋め込まれたApache Tomcat Webコンテナ内でアプリケーションを実行します
アプリケーションがロードされたら、次のように移動します。
http://localhost:8080/online-application/login
一部のサンプル資格情報は、SpringのApplicationSecurity.xml構成ファイルで構成されていることがわかります。
mvn test
...これは一連のテスト内ですべてのユニットテストを実行します
または
IDEから、ユニットテストクラスに移動し、IDEの「実行」ボタンをクリックするだけです
mvn verify
...これにより、一連のテスト内ですべての統合テストが実行されます。
または
IDEから、統合テストクラスに移動し、IDEの「実行」ボタンをクリックするだけです
[TBD]
Sonar(Sonarqube)を使用して、プロジェクトでコード品質分析を実行します。 Sonar-Project.Propertiesファイルが提供されます。 Sonarqube ServerとSonarランナーが必要なので、Sonarqube Webサイトから両方をダウンロードし、インストール手順に従う必要があります。
Sonarが(Sonar Runnerが環境パスに)設置されていると仮定して、CLI Runに次のようになります。
sonar-runner
MySQLで実行することもできます。 mysqlをインストールする必要があります。 MySQL Webサイトからダウンロードして、インストール手順に従ってください。
以下に指定されているように、以下のアンケート:
<!-- uncomment out for use with MySQL database -->
< bean id = " dataSource " class = " org.springframework.jdbc.datasource.DriverManagerDataSource " >
< property name = " driverClassName " value = " com.mysql.jdbc.Driver " />
< property name = " url " value = " jdbc:mysql://localhost:3306/sales_order_system " />
< property name = " username " value = " root " />
< property name = " password " value = " " />
</ bean >
< jdbc : initialize-database ignore-failures = " DROPS " >
< jdbc : script location = " file:src/main/resources/scripts/db-drop-tables.sql " />
< jdbc : script location = " file:src/main/resources/scripts/db-create.sql " />
</ jdbc : initialize-database >MongoDBがシステムにインストールされていると仮定します。そうでない場合は、MongoDB Webサイトからダウンロードして、インストール手順に従ってください。
MongoDBデータベースサーバーを起動します:
./mongod
MongoDBデータベースクライアントを開く:
./mongo
いくつかのサンプルデータを入力するMongoDB JavaScriptファイルをロードする
load("mongodb.js")
アプリケーションは、いくつかの層で構築された単純なモノリシックアプリケーションです。要約すると、バックエンドはJavaで書かれており、バックエンドのインメモリリレーショナルデータベース(HSQL)に接続しています。他のリレーショナルデータベース(MySQL)に接続することもできます。アプリケーションは、Spring Frameworkによってスカフォルドされています。 Model-View-Controller(MVC)アーキテクチャパターンは、フロントエンドをバックエンドから分離するために使用されます。これは、Spring Web MVCによって達成されます。このアプリケーションは、組み込みWebコンテナ(Apache Tomcat)に展開されます。

フロントエンドは明らかにJSPで、あちこちにJSTLが少しあります。 UIにテーブルを実装するためにも使用されるタンポポデータベース。スタイリングの基本的なCSS。 Bootstrapは、このためのフロントエンドフレームワークを提供します。
[TBD]
このアプリケーションは非常に簡単です。現在、基本的なCRUD操作を提供しているWebアプリケーションです。すべての運用は、さまざまなレイヤーを介して実行されるビジネストランザクションと見なされます。したがって、純粋なオブジェクト指向ドメインモデルとは対照的に、貧血ドメインモデルが使用されます。これは十分かつ理想的です。なぜなら、現時点では、必要な複雑なビジネスロジック処理があまりない(もしあれば)必要とされるからです。
アプリケーションの境界を定義し、クライアントレイヤーのインターフェースの観点から利用可能な操作を設定します(フロントエンド)。アプリケーションのビジネスロジックをカプセル化し、トランザクションを制御し、運用の実装において調整応答を制御します。
例えば
@ Service ( "itemServiceImpl" )
@ Transactional
public class ItemServiceImpl implements ItemService {
@ Autowired
private ItemRepository itemRepository ;
...
}データマッパーパターンのデータアクセス機能の前に抽象化の追加レイヤー(Spring Data JPA)を提供する、下のデータストアのオブジェクト指向ビュー。オブジェクトリレーショナルマッピングフレームワーク(Hibernate)は、リレーショナルデータベーステーブルとドメインモデルの違いをマッピングするこの効果を実現するために使用されます。 JPAのエンティティマネージャーは、データアクセス要素(データアクセスオブジェクトパターン)をカプセル化します。
たとえば、スプリングデータJPAリポジトリ
@ Repository
public interface ItemRepository extends JpaRepository < Item , Integer > {
}Spring Frameworkの注釈サポート(コンポーネントスキャン)は、Spring Frameworkのコア能力 - 制御(IOC)コンテナの反転によって提供される依存噴射を活用するために行われます。
@ Controller
public class OrderController {
private static final Logger logger = LoggerFactory . getLogger ( OrderController . class );
@ Autowired
@ Qualifier ( "orderServiceImpl" )
private OrderService orderService ;
@ Autowired
@ Qualifier ( "customerServiceImpl" )
private CustomerService customerService ;
@ Autowired
@ Qualifier ( "itemServiceImpl" )
private ItemService itemService ;
@ Autowired
@ Qualifier ( "orderFormValidator" )
private OrderFormValidator orderFormValidator ;顧客モデルオブジェクトの別の例:
@ Entity
@ Table ( name = "customer" )
@ Getter
@ Setter
@ NoArgsConstructor
@ EqualsAndHashCode ( exclude = "orders" )
@ ToString
public class Customer {
@ Id
@ GeneratedValue ( strategy = GenerationType . IDENTITY )
@ Column ( name = "customer_id" )
private int customerId ;
@ NotNull ( message = "{error.null.firstname}" )
@ NotBlank ( message = "{error.blank.firstname}" )
@ NotEmpty ( message = "{error.empty.firstname}" )
@ Pattern ( regexp = "[a-zA-Z]*" , message = "{error.invalid.firstname}" )
@ Column ( name = "customer_firstname" , nullable = false , length = 50 )
private String firstName ;
@ NotNull ( message = "{error.null.lastname}" )
@ NotBlank ( message = "{error.blank.lastname}" )
@ NotEmpty ( message = "{error.empty.lastname}" )
@ Pattern ( regexp = "[a-zA-Z]*" , message = "{error.invalid.lastname}" )
@ Column ( name = "customer_lastname" , nullable = false , length = 50 )
private String lastName ;LombokプロジェクトGetters/Setters/Tostring/EqualsとHashCodeを生成するために使用されるプロジェクトは、ボイラープレートコードを削除します
このアプリケーションは、Spring FrameworkのSpring Securityモジュールの基本機能を使用して実装されたログイン/ログアウト機能を有効にします。
次のApplication-security.xml Spring構成ファイルには、主要なセキュリティ構成が表示されます。
< beans : beans xmlns = " http://www.springframework.org/schema/security "
xmlns : beans = " http://www.springframework.org/schema/beans "
xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd " >
< http auto-config = " true " >
<!-- items -->
< intercept-url pattern = " /items " access = " ROLE_TEST_USER,ROLE_ADMIN " />
< intercept-url pattern = " /items/create " access = " ROLE_TEST_USER,ROLE_ADMIN " />
< intercept-url pattern = " /items/createItem " access = " ROLE_TEST_USER,ROLE_ADMIN " />
....
< form-login
login-page = " /login "
default-target-url = " /customers "
authentication-failure-url = " /login?error "
username-parameter = " username "
password-parameter = " password "
/>
< logout logout-success-url = " /login?logout " />
< csrf />
</ http >
< authentication-manager >
< authentication-provider >
< user-service >
<!-- hard coding application user credentials - switch to DB or LDAP -->
< user name = " testUser " password = " password " authorities = " ROLE_TEST_USER " />
< user name = " admin " password = " password " authorities = " ROLE_ADMIN " />
</ user-service >
</ authentication-provider >
</ authentication-manager >
</ beans : beans >統合テストは、Springのテストコンテキストフレームワークを使用して実装されます。インメモリデータベース(HSQL)が使用されます。
エンド2エンドテスト(受け入れテスト)は、キュウリJVMを使用して行われます。これは、テスト自動サブモジュールの下で利用できます。これの目的は、フルスタックWebアプリケーションのエンドツーエンドオートメーションを提供することです。たぶん、WebブラウザでWebアプリケーションの自動化を可能にする将来のSeleniumを統合できるかもしれません。しかし、今のところ、キュウリのテストはバックエンドコードで記述されています。受け入れ基準は、Gherkin言語を使用して.featureファイルに記述されています。この領域は改善が必要です。このプロジェクトのエンド2エンドテストはまだWIPであることに注意してください。
[TBD]
| フロントエンド | バックエンド | データベース | テスト | 他の |
|---|---|---|---|---|
| HTML | Java 8 | HSQL(HyperSQL) | ジュニット | slf4j -log4j |
| CSS | スプリングコア | mysql | assertj | メイベン |
| JS | Spring Web MVC | mongodb | モキト | トムキャット |
| ブートストラップ | スプリングデータJPA | キュウリJVM | Sonarqube | |
| jsp | スプリングセキュリティ | スプリングテストコンテキスト | ロンボク | |
| JSTL | JPA-冬眠 | |||
| タンポポのデータテーブル | JTA | |||
| Bean検証 |