Spring入門 Javaフレームワーク・より良い設計とアーキテクチャ

著者の長谷川さんから献本を頂きました。ありがとうございます。

Spring入門が改訂され今回は Spring4 対応版になります。

SpringBoot がキラーアプリケーションになり、その基盤となっている Spring Framework が注目されているわけですが、コアの部分は昔からあるせいか書籍が限られてしまいます。本書はその点 Spring が出始めた時代に出版させた本のため、Spring Frameworkが生まれた背景の話やコアの部分の記述が厚くなっています。改めて見ると昔はいっぱいのXMLを書いてましたね...そこら辺をいい感じにしてくれるSpringBootのありがたさを感じることも出来ますね。

また、安定依存原則や依存関係逆転原則に基づいた凹型レイヤなど設計の観点も記載があるため初めてソフトウェアアーキテクチャを考えなきゃいけないような人も手元にあると心強い一冊になっています。

ただ、SpringBatchやSpringBootについては紹介程度になっているため、それらの詳細な情報を期待している人は、書店にて自分が必要な情報が載っているかどうかを確認した方が良いしれません。

SpringBootを始めSpring Frameworkの力を最大限に活用するためにもぜひ手に取ってみてはいかがでしょうか。

目次はこちら。

第1章 SpringとWebアプリケーションの概要
 1.1 Springの最新事情
 1.2 Webアプリケーション概論
 1.3 Spring概要
第2章 SpringのCore
 2.1 SpringのDI(Dependency Injection)
 2.2 SpringのAOP(Aspect Oriented Programming)
第3章 データアクセス層の設計と実装
 3.1 データアクセス層とSpring
 3.2 Spring JDBC
 3.3 Spring JDBC
 3.4 まとめ
第4章 ビジネスロジック層の設計と実装
 4.1 トランザクションとは
 4.2 トランザクションマネージャ
 4.3 トランザクション機能の使い方
 4.4 まとめ
第5章 プレゼンテーション層の設計と実装
 5.1 Spring MVCの概要
 5.2 環境作成と動作確認
 5.3 サンプルアプリケーションの概要
 5.4 画面を表示するController
 5.5 入力値を受け取るController
 5.6 Spring MVCのその他の機能
 5.7 最後に
第6章 認証・認可
 6.1 認証・認可とフレームワーク
 6.2 認証・認可の基本
 6.3 Spring Securityの概要と導入
 6.4 Spring Securityの基本構造
 6.5 Webアプリケーションと認証
 6.6 Webアプリケーションと認可(アクセス制御)
 6.7 Spring Securityの連携機能
 6.8 セキュリティ攻撃対策
 6.9 まとめ
第7章 ORM連携 - Hibernate, JPA, MyBatis
 7.1 認証・認可とフレームワーク
 7.2 認証・認可の基本
 7.3 Spring Securityの概要と導入
 7.4 Spring Securityの基本構造
第8章 キャッシュ抽象機能(Cache Abstraction) - Spring Cache
 8.1 ProductDaoImplとProductServiceImpl, ProductSampleRunの改造と動作確認
 8.2 応用編
第9章 バッチの設計と実装
 9.1 バッチ
 9.2 Spring Batch
 9.3 サンプルを使った解決
第10章 Cloud Nativeの入り口
 10.1 Spring Boot
 10.2 Pivotal Web Servicesを利用して"Hello World!"
 10.3 PWSにログインする
 10.4 PWSにデプロイして実行する
 10.5 おわりに

Gitでリモートレポジトリの登録、確認、更新、削除(git remote)

忘れちゃうのでメモ。

リモートリポジトリの登録

$ git remote add <name> <url>

登録されているリモートリポジトリの確認

-v をつけると詳細情報

$ git remote
$ git remote -v

リモートリポジトリURLの編集

$ git remote set-url <name> <newurl>

リモートリポジトリ名の変更

$ git remote rename <old> <new>

リモートリポジトリの削除

$ git remote rm <name>

Gradleインストール2

GVMをインストールしたので、次はGroovyとGradleのインストール。バージョンを指定しなければ最新版が入る。

bobbyjam99% gvm install groovy                                                                                      [~]

Downloading: groovy 2.1.1

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 27.1M  100 27.1M    0     0   212k      0  0:02:10  0:02:10 --:--:--  227k

Installing: groovy 2.1.1
Done installing!

Do you want groovy 2.1.1 to be set as default? (Y/n): y

Setting groovy 2.1.1 as default.
bobbyjam99% groovy -v                                                                                               [~]
Groovy Version: 2.1.1 JVM: 1.6.0_43 Vendor: Apple Inc. OS: Mac OS X
bobbyjam99% gvm install gradle                                                                                      [~]

Downloading: gradle 1.4

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0   352    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100 47.4M  100 47.4M    0     0   230k      0  0:03:31  0:03:31 --:--:--  234k

Installing: gradle 1.4
Done installing!

Do you want gradle 1.4 to be set as default? (Y/n): y

Setting gradle 1.4 as default.
bobbyjam99% gradle -v                                                                                               [~]

------------------------------------------------------------
Gradle 1.4
------------------------------------------------------------

Gradle build time: 2013?N1??28?? 3??42??46?b UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.6.0_43 (Apple Inc. 20.14-b01-447)
OS: Mac OS X 10.8.2 x86_64

bobbyjam99%                                                                                                         [~]

GVMインストール

id:nobusue さんにGrandleをインストールするならGVMの方が良いとコメントを頂いたのでGVM(http://gvmtool.net/)をインストールする。インストールする前にJAVA_HOMEの設定が必要。あとはサイトに記述しているコマンドを実行するだけ。

bobbyjam99% echo $JAVA_HOME                                                                                         [~]
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
bobbyjam99% curl -s get.gvmtool.net | bash                                                                          [~]
uname: illegal option -- o
usage: uname [-amnprsv]
                                                                     
Thanks for using                                                     
                                                                     
_____/\\\\\\\\\\\\__/\\\________/\\\__/\\\\____________/\\\\_        
 ___/\\\//////////__\/\\\_______\/\\\_\/\\\\\\________/\\\\\\_       
  __/\\\_____________\//\\\______/\\\__\/\\\//\\\____/\\\//\\\_      
   _\/\\\____/\\\\\\\__\//\\\____/\\\___\/\\\\///\\\/\\\/_\/\\\_     
    _\/\\\___\/////\\\___\//\\\__/\\\____\/\\\__\///\\\/___\/\\\_    
     _\/\\\_______\/\\\____\//\\\/\\\_____\/\\\____\///_____\/\\\_   
      _\/\\\_______\/\\\_____\//\\\\\______\/\\\_____________\/\\\_  
       _\//\\\\\\\\\\\\/_______\//\\\_______\/\\\_____________\/\\\_ 
        __\////////////__________\///________\///______________\///__
                                                                     
                                       Will now attempt installing...
                                                                     
Looking for a previous installation of GVM...
Looking for JAVA_HOME...
Validating JAVA_HOME...
Looking for unzip...
Looking for curl...
Installing gvm scripts...
Create distribution directories...
Create candidate directories...
Prime the config file...
Download script archive...
Extract script archive...
Install scripts...
Make init script executable...
Attempt update of bash profiles...
Created and initialised /Users/bobbyjam99/.bash_profile
Updated existing /Users/bobbyjam99/.bashrc
Attempt update of zsh profiles...
Updated existing /Users/bobbyjam99/.zshrc



All done!


Please open a new terminal, or run the following in the existing one:

    source "/Users/bobbyjam99/.gvm/bin/gvm-init.sh"

Then issue the following command:

    gvm help

Enjoy!!!
bobbyjam99%                                                                                                         [~]

新しいターミナルを開いてコマンドを実施しろ、と書いてあるので言われる通りに実施。

bobbyjam99% source "/Users/bobbyjam99/.gvm/bin/gvm-init.sh"                                               [~]
bobbyjam99% gvm help                                                                                                [~]

==== BROADCAST =============================================

GVM version 0.9.5                              
In this release:                               
 * local dev candidate installation            
 * zsh init fragment bug fix                   
 * strip out isolated_mode config              
 * improvements on README.md                   
 * various bug fixes                           
                                               
Report any issues at:                          
  https://github.com/gvmtool/gvm/issues        

Running GVM server 0.9.5 on vertx 1.3.0.final

============================================================

Usage: gvm <command> <candidate> [version]

   command    :  install, uninstall, list, use, current, version, default, selfupdate, broadcast or help
   candidate  :  groovy, grails, griffon, gradle, vertx
   version    :  optional, defaults to latest stable if not provided

eg: gvm install groovy
bobbyjam99%                                                                       

楽ちんインストール!ちなみにRVMにあるseppukuコマンドはないのね。

Gradleインストール

[追記] 最近はGVMを使ってインストールするようです。id:nobusue さんありがとうございます! > Gradleインストール2 - 桜が咲く頃にふと想ふ

次のプロジェクトでGradle使おうかなーと思い素振り。インストールはHomebrewで入れられるらしいので実施。

bobbyjam99% brew search groovy                                                                                      [~]
groovy	    groovyserv
bobbyjam99% brew install groovy                                                                                     [~]
==> Downloading http://dist.groovy.codehaus.org/distributions/groovy-binary-1.8.6.zip
######################################################################## 100.0%
==> Caveats
You should set the environment variable GROOVY_HOME to
  /usr/local/Cellar/groovy/1.8.6/libexec
Warning: Non-executables were installed to "bin".
Installing non-executables to "bin" is bad practice.
The offending files are:
/usr/local/Cellar/groovy/1.8.6/bin/startGroovy
==> Summary
/usr/local/Cellar/groovy/1.8.6: 39 files, 17M, built in 108 seconds
bobbyjam99% groovy -v                                                                                               [~]
Groovy Version: 1.8.6 JVM: 1.6.0_43 Vendor: Apple Inc. OS: Mac OS X
bobbyjam99% brew search gradle                                                                                      [~]
gradle
bobbyjam99% brew install gradle                                                                                     [~]
==> Downloading http://services.gradle.org/distributions/gradle-1.0-milestone-9-bin.zip
######################################################################## 100.0%
/usr/local/Cellar/gradle/1.0-milestone-9: 80 files, 32M, built in 2.9 minutes
bobbyjam99% gradle -v                                                                                               

------------------------------------------------------------
Gradle 1.0-milestone-9
------------------------------------------------------------

Gradle build time: 2012?N3??13?? 16??10??09?b UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.2 compiled on December 20 2010
Ivy: 2.2.0
JVM: 1.6.0_43 (Apple Inc. 20.14-b01-447)
OS: Mac OS X 10.8.2 x86_64
bobbyjam99%

あとは.zshrcにPATHを通す。

# Gradle
GRADLE_HOME=/usr/local/Cellar/gradle/1.0-milestone-9
export GRADLE_HOME

export PATH=$GRADLE_HOME/bin:$PATH

って入れてみたけど、Gradle 1.0って古いな...Homebrewダメみたい。

WindowsにBlueClothをインストールするとエラー

WindowsにBlueClothをインストールするとエラーが発生したので、その対応などをgistに書いたので埋め込んでおきます。

埋め込んでみたけどmarkdownが適用されないから見にくいね。

MacBook Air 11インチ欲しい!

MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
MacBook Air 11インチ欲しい!
11インチだけに11個書いておいた.