Androidアプリ開発したい!

IT屋がGalaxySを手に入れてからAndroidに興味が湧き、いろいろと開発したりしてます。 GalaxyNexusがメイン機となり、ようやく普及し始めたAndroid4.0への関心が高いです。 仕事では、iPhone向けとかのソシャゲ作ってます。

Java

java Spring3.xを使ってみる

せっかくScientificLinuxをVMにインストールしたので、
Webアプリケーションを作って乗っけてみたいなぁ~と思い
Springを復習しようとしたらあまりの激変に想像以上に時間がかかってしまったOTL

どうもSpring3関係の書籍というかSpringの日本語書籍が全般的に少なくて、
英語苦手な私としてはかなりハードルが高いです・・・

【1.STS(SpringSource Tool Suite)のインストール】
SpringSource公式(SpringSource Tool Suiteのダウンロード)URL:

※現時点2012/05/20の最新バージョンは、「2.9.1.RELEASE」です。

インストールというかセットアップは特別難しいことはありません。
ダウンロードするためにユーザ情報の入力が求められますが、
別にメールでURLが来るわけでもないので、
ぶっちゃけて適当な入力でもダウンロード可能です。

bad22c04.png

私は、InstallerではなくZipにしました。
他のPCでも使うときとかコピーが楽ですし?

こちらのサイトを少し参考にしました。
ありがとうございました。


【2.STS(SpringSource Tool Suite)を日本語化】
Pleiades (プレアデス)をダウンロードして、
「plugins」フォルダをそのままSTSインストール直下に入れちゃえばOKです。
 
例)※私はC:\直下にZip解答したので以下のパスです
C:\springsource\sts-2.9.1.RELEASE


【3.Spring3 DIでHelloWorld】
これはまんま以下のサイトの通りにやったので、
こっち見ていただけると分かりやすいかと思います。



【4.component-scanがエラーになるように、わざと間違えてみた】

プロジェクト構成
※Serviceインターフェースの具象クラスで、「@Component」アノテーションがついたクラスが
com.kyokomi.hellospring」パッケージ下に2つ存在する状況。

b42fa725.png




app-context.xml
beanのcomponent-scanの対象が"com.kyokomi.hellospring"以下のパッケージになっている。


■実行結果

ポイントは「No unique bean of type [com.kyokomi.hellospring.Service] is defined」の一言。

英語が苦手な私にもわかるレベルの内容ですが、
一応google翻訳した結果がこれです。

「型のないユニークな豆なし[com.kyokomi.hellospring.Service]定義されています」

ちょっとおしい!(笑)


勝手に解釈するとこんな感じでしょうかね。

[com.kyokomi.hellospring.Service]Beanの定義は一意ではありません。

要するに「そのServiceってBeanが2つあるけど、どっち使えばええねん!!?」
ってことですね。


対策
対策としては、以下の3つがパッと思いつきました。
まあ他にもあるだろうけどまだまだ初心者なので、この程度が限界っす。


1.そもそもどっちかのクラスを消す

2.StubServiceを使うのなら、app-contextのcomponent-scan範囲を"com.kyokomi.hellpspring.stub"にする
 ⇒この場合はMainクラスがscanから外れるので、以下を追加する必要がありますが
  <bean id= "main" class ="com.kyokomi.hellospring.Main" />

3."com.kyokomi.hellostub"とかにして、Serviceインターフェースの具象クラスを別のパッケージ階層にする


とりあえず「2.」をやってみた結果

63969548.png


【感想】
Springは1.x時代に触った以来だからあまりの進化っぷりに驚きを隠せない。
なんかもっとxmlの設定ファイルとかごちゃごちゃしてて辛かった記憶しかないな・・・
やっぱ時代はアノテーションとかでの自動接続とかが賢いやりかたなのね!

また、気が向いたらSpring3 MVCとかもやります。




Java7(JDK1.7)のラインナップを試しに使ってみる

主な変更点を抜粋して、実際に動かしてみた。
もっと詳しい内容を知りたい場合は、
以下のURLとかで確認してください。わかりやすいです。

①switch文で文字列
nullだとぬるぽで落ちます

今まで何度かほしいなと思った文字列swichがついに対応か。
まあif文でもいいけどやっぱ明らかに1つしかチェックしないときはswich文の方が、
パッと見でわかるからいいよね。

②tra catchで全例外をExceptionで受けたとき、
throws Exceptionをつけずに再スローできるようになった

③数値リテラルに_(アンダーバー)が使えるように
数値が並びすぎるとゲシュタルト崩壊するからね・・・・

④総称型にダイヤモンド演算子<>を指定できるように
構文上明白なときに型引数を省略できるもの
書く手間が省けるからいいのか

⑤整数リテラル0bで始めると2進数
int nisin_num = 0b1111001001001;
ふ~ん、どっかの案件の時にあればよかったのにと思ってしまう

⑥リソース付きtryキャッチで自動的にclose()してくれる
try-with-resources statement
※必ずしもtry文でnewしなくてもよい

これは便利だ。
IO系のクローズをcatchとかfinallyで書かなくてよくなる

⑦例外のマルチキャッチ
あまり関係ないけど、
マルチキャッチってなんか語呂がイイネ!

※他にも色々あるけどとりあえずこの7つで満足。

■ソースコード


■実行結果はこんな感じ

b419e0dc.png


■ちなみに①でヌルポを実験した結果

cfc9a07e.png

以上です!
中々充実してるからガンガン使って慣れていきたいと思います。
AndroidもそろそろJava7になるとかなんとかって話もあるみたいですし?

持ってる端末
・Galaxy S root化済    (2.3.6)
・Galaxy Nexus          (4.1.1)
・GALAPAGOS A01SH (4.0.4)
・ONDA Vi10              (4.0.3) 
・iPod Touch           (iOS 6.0)
記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

  • ライブドアブログ