Grails-Web開発者の聖杯

聖杯



エントリーまたは小麦粉



こんにちは Grailsについて少しお話しし、簡単なWebアプリケーションを作成する方法を示したいと思います。 まず、迅速な開発のための便利で機能的なWebフレームワークを探していました。 私はDjango、Ruby On Rails、およびさまざまなJava開発に交互に目を向けました。 もちろん、私はJava、Spring Framework、Hibernateが好きです。すべて一緒にすると強力なものになります。 しかし、いくつかの点は私に合わなかった:



私は代替手段を探し始めました。 PHPは、この言語の不完全さと「自転車製造」の伝統のために、すぐに取り払われました。 Pythonが大好きなDjangoは試され、そのシンプルさと便利さが気に入っています。 Djangoで小規模なプロジェクトを行うことは適切だと思いますが、テンプレートエンジンの制限された機能、たとえばテンプレートの条件や変数の割り当ての欠如は好きではありませんでした。 もちろん、テンプレートには最小限のロジックがあるべきだと言う人もいますが、変数やブランチはありません。 実際のプロジェクトでの私の意見では、これにより多くの不便が生じることに反対します。 確かに、Djangoの新しいバージョンでは、これらの問題はすぐに解決されます。 このフレームワークのすべての利点により、私はその手続き指向を好みません-これは純粋に主観的な意見であり、Python自体の手続き指向であり、OOPが昨日だけで登場したかのようであり、プログラミング言語自体のレベルでのアプリケーションコードのセキュリティの欠如も同様です定数はありません。クラスではすべてのメソッドとプロパティがパブリックであり、クラスメンバーをプライベートにするためにアンダースコアを使用する必要があり、コードが非常に読みにくくなります。 私は、RubyをOOPに大きな偏りがあるPythonの改良版と見なしましたが、Rubyを試した多くの人々のように、インタプリタの構文とスローダウンに追われました。 別のものが欲しかった。 そして、私はそれを見つけました-聖杯。



Groovy-Java Next



Javaが大好きな私は、次世代のJavaベースの言語であるGroovyを詳しく調べ始めました。 これは、優れたJava構文を備えたコンパイル済みプログラミング言語であり、使いやすく、簡潔で、強力です。 Groovyプログラムは、Java仮想マシンでバイトコードにコンパイルされます。 主な利点には、コードとライブラリのレベルでのJavaとの互換性、関数型プログラミングのサポート、便利な構文糖、多くの新機能が含まれます。GroovyはJavaクラスとライブラリを使用できるため、すべての経験が得られるわけではありません船外に残ります。 Groovyの欠点の中で、この言語の動的型付けに注意する必要があります-変​​数の型は明示的に指定できますが、すべてのチェックはコンパイルではなくコード実行の段階で行われます。その結果、Javaに比べて速度が遅くなり、テストで示したように、Groovyコードは平均的です同様のJavaコードの40倍遅い。 しかし、この問題には、まもなく本格的なソリューションが登場すると思います-最近ではGroovy ++が登場しました。これは、1つのプロジェクトで動的型と静的型の両方を使用できる静的コードコンパイラです。 アノテーションを使用して静的型付けが有効になり、テスト結果によると、コードは「クラシック」Javaコードと速度が同等になります。



聖杯



知らない人のために、私はGrailsについて話しています。Grailsは、新世代の言語であるGroovyでWebアプリケーションを開発するためのWebフレームワークです。 なぜ杯? Grailsは、既存の最高のテクノロジーを取り入れています。 イデオロギーは、Ruby on railsに似ており、しばらくの間、Groovy on Railsとまったく同じように呼ばれていました。 Grailsは、Sitemeshテンプレートエンジンとカスタムgspタグを使用したSpring、Hibernateのアドオンです。 単純なアプリケーションを作成するために追加のライブラリが必要なSpringとは異なり、Grailsにはすべて「すぐに使用可能」に含まれており、XML構成を構成する必要はなく、すべての操作は簡単かつ自然な方法で行われます。 Grailsは現在、Java開発リーダーのSpring Sourceが所有しています。 Grailsの機能を拡張するプラグインがあります。たとえば、承認と認証を処理するacegiです。 GrailsはMVCの原則に従い、URLをコントローラーにバインドし、アプリケーションをローカライズし、モデルデータを検証するなどの便利なツールを提供します。 典型的なプロジェクト構造は次のとおりです。



 %PROJECT_HOME%
	 + grails-app
		 + conf->設定
			 +休止状態
			 +春
			 BootStrap.groovy->アプリケーションのダウンロード
			 BuildConfig.groovy->ビルド構成
			 Config.groovy->一般設定
			 DataSource.groovy->データベース設定
			 UrlMappings.groovy->コントローラーへのURLバインディング
		 +コントローラー->コントローラー
		 +ドメイン->モデル
		 + i18n->ローカライズ
		 +サービス->サービス
		 + taglib->ユーザータグ
		 + utils->ヘルパークラス
		 +ビュー->ビュー
			 +レイアウト->レイアウト(テンプレートコンテナー)
	 + lib->ライブラリ
	 +プラグイン-> Grailsのプラグイン
	 +スクリプト->スクリプト
	 + src
		 +グルーヴィー
		 + java
		 +メイン
	 +ターゲット
	 +テスト->単体テスト
	 + Webアプリ
		 + WEB-INF


それでは、Grailsを試してみましょう。



クイックスタート



次のツールが必要です。



Grails(http://www.grails.org/Releases)をダウンロードして解凍し、GRAILS_HOME環境変数を設定します。この環境変数は、解凍されたアーカイブへのフルパス(例えば〜/ grails)を指し、GRAILS_HOME / binを起動パスに追加します。 www.grails.org/STS+IntegrationからIDEをダウンロードし、サイトの説明に従ってインストールおよび構成します。



Mavenを使用してtestappアプリケーションのスケルトンを作成しましょう。



$ mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId = org.grails -DarchetypeArtifactId = grails-maven-archetype -DarchetypeVersion = 1.2.0 -DgroupId = testapp -DartifactId = testapp



$ cd testapp

$ mvn initialize



Eclipseを実行して、アプリケーションをインポートします。 ファイル->インポート->既存のプロジェクトをワークスペースに



インポート後、次の構造が表示されます。



プロジェクト構造



それでは、アプリケーションを構成しましょう。 grails-app / conf / DataSource.groovyファイルを開き、次の内容を確認します。



 dataSource {pooled = true driverClassName = "org.hsqldb.jdbcDriver" username = "sa" password = ""} hibernate {cache.use_second_level_cache = true cache.use_query_cache = true cache.provider_class = 'net.sf.ehcache.hiberacheate.h '} //環境固有の設定environment {development {dataSource {dbCreate = "create-drop" // one' 'create'、 'create-drop'、 'update' url = "jdbc:hsqldb:mem:devDB"}} test {dataSource {dbCreate = "update" url = "jdbc:hsqldb:mem:testDb"}} production {dataSource {dbCreate = "update" url = "jdbc:hsqldb:file:prodDb; shutdown = true"}}} 


dataSourceには、データベースに接続するための設定が含まれています。 それらをmysqlで動作するように適合させましょう:



  dataSource {
	プールされた= true
	 driverClassName = "com.mysql.jdbc.Driver"
	ユーザー名=「ルート」
	パスワード= ""
 }


さらに検討すると、次のセクションが表示されます。



 環境{
	開発{
		 dataSource {
			 ...
		 }
	 } 


環境セクションでは、アプリケーションモードについて説明します。 それらの3つだけがあります:開発、テストおよび生産モード。 各モードは、独自のデータベース接続設定を使用します。 現時点では、開発モードに興味があります。設定を次のように修正します。



 開発{
	 dataSource {
		 dbCreate = "更新"
		 url = "jdbc:mysql:// localhost:3306 / testapp"
	 }
 } 


mysqlサービスが実行されており、testappデータベースが作成されていることを確認することを忘れないでください。



次に、grails-app / conf / BuildConfig.groovyファイルを開きます。 上で書いたように、これはアプリケーションのビルドファイルです。 次のコードに興味があります。



 リポジトリ{        
         grailsPlugins()
        ホーム()

         //リモートの依存関係の解決を有効にするには、以下のコメントを解除します
         //パブリックMavenリポジトリから
         // mavenLocal()
         // mavenCentral()
         // mavenRepo "http://snapshots.repository.codehaus.org"
         // mavenRepo "http://repository.codehaus.org"
         // mavenRepo "http://download.java.net/maven/2/"
         // mavenRepo "http://repository.jboss.com/maven2/"
     }
    依存関係{
         //ここで 'build'、 'compile'、 'runtime'、 'test'または 'provided'スコープのいずれかで依存関係を指定します。

         //ランタイム 'mysql:mysql-connector-java:5.1.5'
     } 


これは、ビルドの依存関係を解決するためのセクションです。 次のように修正します。



 リポジトリ{        
         grailsPlugins()
        ホーム()

         //リモートの依存関係の解決を有効にするには、以下のコメントを解除します
         //パブリックMavenリポジトリから
         mavenLocal()
         mavenCentral()
         // mavenRepo "http://snapshots.repository.codehaus.org"
         mavenRepo "http://repository.codehaus.org"
         mavenRepo "http://download.java.net/maven/2/"
         // mavenRepo "http://repository.jboss.com/maven2/"
     }
    依存関係{
         //ここで 'build'、 'compile'、 'runtime'、 'test'または 'provided'スコープのいずれかで依存関係を指定します。

        ランタイム 'mysql:mysql-connector-java:5.1.5'
     } 


mysqlドライバーを追加しました。 そして、今度は簡単なアプリケーションを作成します。 最初に、製品モデルを作成します。そのためには、Grailsコンソールでcreate-domain-classコマンドを実行する必要があります。 モデルを作成するとき、データベースにテーブルを手動で作成する必要はありません。Grailsは自分で作成します。 Eclipseで次を開きます: ナビゲート-> Grailsコマンドプロンプト開いて実行します:



grails> create-domain-class com.testapp.Product



モデルを作成するプロセスは、Eclipseコンソールで確認できます。 作成中に次のメッセージが表示された場合:

アプリケーションはgrailsバージョン[1.2.0]を想定していますが、GRAILS_HOMEはバージョン[1.2.1]です。このGrailsバージョンがアプリケーションが想定するバージョンよりも新しい場合は、正しいGrailsバージョンを使用するか「grailsアップグレード」を実行します。



これは、mavenを使用してgrails 1.2.0のアプリケーションスケルトンを作成し、システムに新しいバージョンがあることを意味します。 指示に従って、アップグレードコマンドを実行します。



grails>アップグレード



モデル作成プロセスが成功した場合、grails-app / domain / Product.groovyに次のコードが表示されます。



 パッケージcom.testapp

クラスProduct {

    静的制約= {
     }
 } 


モデルに必要なフィールド(製品名、説明、価格)を入力します。



 クラスProduct {

	文字列名
	文字列の説明
	フロート価格
	静的制約= {
		名前(nullable:false、空白:false、サイズ:1..50)
		説明(ヌル可能:false、ブランク:false、サイズ:1..255)
	 }
	
	文字列toString(){
		名前を返す; 
	 }
 } 


いいね! 次に、彼女のCRUDを作成しましょう。 これを行うために、コントローラーとビューを作成する必要はなく、すべてを生成する1つのコマンドで対応できます。



grails> generate-all com.testapp.Product



その結果、次のことがわかります。



ドメインクラスcom.testapp.Productのビューを生成しています...

ドメインクラスcom.testapp.Productのコントローラーを生成しています...

ドメインクラスcom.testapp.Productの生成が終了しました



このコマンドは生成しました:

com.testapp.ProductControllerコントローラー

grails-app / views / productディレクトリにcreate.gsp、edit.gsp、list.gsp、show.gspを表示します



これで、簡単なアプリケーションの準備ができました。 これで、run-appコマンドを使用して実行できます。 起動されたアプリケーションはローカルホストで利用可能になります:8080 / testapp



画像



画像



画像



画像







All Articles