列
誤 | <bean id="emails" |
正 | <bean id="users" |
P.257 リスト12.26の(6)の部分
誤 | from="java.lang.String" to="java.lang.Integer"/> |
正 | from="string" to="integer"/> |
mappingタグのfrom属性/to属性にはクラスを指定するのではなく,クラスの「エイリアス」を指定します。クラスのエイリアスとは,Stringまたはプリミティブ型のラッパクラスの,クラス名の先頭を小文字にしたもの*になります。(String → string,Integer → integer,Long → long,etc)。
ただし,フロー定義ファイルのスキーマ定義では「クラスのエイリアスまたはクラスを指定する」となっているため,今後クラスでも指定できるように変更される可能性はあります。
*……Integerについては,「int」でも指定することができます。
P.384リスト18.4の(7)の部分(下から3行目)
誤 | pointcut="execution(* *Service.*(..))"/> |
正 | pointcut="execution(* *..*Service.*(..))"/> |
修正前のポイントカットの指定では,ルートパッケージにあるServiceクラスにしかAspectが適用されません。今回のようにパッケージに含まれるクラスに適用する場合は,クラス指定(今回は「*Service」)の前に「*..」を指定する必要があります。
P.328 リスト15.6は次のコードが正しいものです。大変失礼しました。深くお詫びもうしあげます。
▼リスト15.6 RmiProxyFactoryBeanのBean定義ファイルの例
(rmi_client_applicatoinContext.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=
"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-2.0.xsd">
<bean id=
"customerServiceClient"
class=
"org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name=
"serviceUrl" value=
"rmi://localhost:1099/CustomerService"/>
<property name="serviceInterface" value=
"com.mamezou.remote.CustomerService"/>
</bean>
</beans>
本書の補足情報
P.66 4.4.2.2 「Aroundアドバイスの設定」補足説明
Aroundアドバイスの説明でProceedingJoinPoint#proceed()メソッドの戻り値について,記述がありませんでしたので補足します。
ProceedingJoinPoint#proceed()メソッドを利用すると,アスペクトの対象となるメソッドが実行されます。
アスペクトの対象となるメソッドが,実行結果として戻り値を返す場合は,ProceedingJoinPoint#proceed()メソッドはObject型でその戻り値を受け取ることができます。
以下のリストは,アスペクトの対象となるメソッドが,Employeeオブジェクト,String,intの戻り値を返した場合に,それを受け取り,加工して,アスペクトの対象となるメソッドを呼び出した側のメソッドに返却する例です。
// アスペクトの対象となるメソッドが,Employeeオブジェクトを返す場合
public Employee aroundEmployee
(ProceedingJoinPoint pjp) throws Throwable {
Employee emp = (Employee)pjp.proceed();
emp.setName("Hoge");
return emp;
}
// アスペクトの対象となるメソッドが,Stringを返す場合
public String aroundString
(ProceedingJoinPoint pjp) throws Throwable {
String str = (String)pjp.proceed();
return str + "Hoge";
}
// アスペクトの対象となるメソッドが,intを返す場合
public int aroundInt
(ProceedingJoinPoint pjp) throws Throwable {
Integer value = (Integer)pjp.proceed();
int ret = value.intValue();
return ret*1.05;
}
Spring2.0入門「サンプルコードについて」
1 動作環境について
1.1 バージョンの確認
- Windows:XP Professional SP2
- JDK :5.0 Update 10
- Eclipse:3.2.1
- WTP :1.5.2
- Tomcat :5.5.20
上記環境を確認のうえ,本サンプルコードをご利用ください。
1.2 基本的な動作環境を構築するために必要なソフトウェアのダウンロード方法
1.3 環境構築するための,各ソフトウェアのインストール方法
- 次の順番でインストールしてください。
-
- JDKをインストールします。
ダウンロードしたファイルを実行してください。
- Tomcatをインストールします。
ダウンロードしたファイルを実行してください。
- Eclipse(WTP含む)をインストールします。
ダウンロードしたファイルを展開(解凍)してください。
1.4 初期設定
- WTPでTomcatを利用するための設定をおこないます。次の手順で設定をおこなってください。
-
- Eclipseを起動します。
メニューから[File]-[New]-[Other...]を選択します。
- Newダイアログ(Select a wizard)が開きます。
[Serverフォルダ]-[Server]を指定します。
[Next]ボタンを選択します。
- New Serverダイアログ(Define a New Server)が開きます。
Select the server typeを指定します。
→[Apacheフォルダ]-[Tomcat v5.5 Server]を指定します。
[Next]ボタンを選択します。
- New Serverダイアログ(Tomcat Server)が開きます。
Tomcat installation directoryを指定します。
→[Browse]ボタンを選択し,Tomcatのインストール先フォルダを指定します。
例)C:\Program Files\Apache Software Foundation\Tomcat 5.5
[Next]ボタンを選択します。
- New Serverダイアログ(Add and Remove Projects)が開きます。
[Finish]ボタンを選択します。
2 Sprin2.0入門のサンプルコードの使い方
2.1 インストール方法
- サンプルコードはEclipseプロジェクトになっています。次の手順でEclipseにインストールしてください。
-
- Eclipseを起動します。
メニューから[File]-[Import]を選択します。
- Importダイアログ(Select)が開きます。
[Generalフォルダ]-[Existing Projects into Workspace]を指定します。
[Next]ボタンを選択します。
- Importダイアログ(Import Projects)が開きます。
[Select archive file]ラジオボタンを選択します。
[Browse]ボタンを選択し,インポートするアーカイブファイル(*.zip)を指定します。
Projectsに指定したアーカイブファイルに含まれるプロジェクトが表示されます。
[Finish]ボタンを選択します。
2.2 動作方法
-
ここではEclipseプロジェクトのタイプごとに動作方法を説明します。
サンプルコードは以下のEclipseプロジェクトのどちらかを使用しています。
Java Project: Javaアプリケーション開発に使用します。
Dynamic Web Project: Webアプリケーション開発に使用します。
●2.2.1 Java Projectの動作方法
Java Projectのサンプルは以下のクラスで用意しています。
-
- メソッドmainを含むMainクラス
- JUnitを利用したJUnitテストケース
- Mainクラスの場合:
Mainクラスのコンテキストメニューから,[Run As]-[Java Application]を選択します。
- JUnitテストケースの場合:
JUnitテストケースのコンテキストメニューから,[Run As]-[JUnit Test]を選択します。
●2.2.2 Dynamic Web Projectの動作方法
Dynamic Web Projectのサンプルは以下の手順で実行します。
-
- J2EEパースペクティブを開きます。
- Serversビューの[Tomcat v5.5 @ localhost]サーバのコンテキストメニューから
[Add and Remove Projects]を選択します。
- Add and Remove Projectsダイアログが開きます。
実行するプロジェクトを追加します。
- [Finish]ボタンを選択します。
- Serversビューの[Start the server]ボタン(緑色の丸いアイコン)を選択します。
- サーバ起動後にWebブラウザを開きreadme.txtで指定されたURLにアクセスします。サーバを停止する時はServersビューの[Stop the server]ボタン(赤色の四角いアイコン)を選択します。
2.3 サンプルコード一覧
以下に各章とサンプルコードの対応を示します。ファイル名をクリックすると,ダウンロードが始まります。zip形式の圧縮ファイルとなっています。それぞれ解凍すると,readme.txtファイルがありますので,ご利用される前に必ずこのファイルを熟読してください。そのうえでご利用ください。
まずは「サンプルコードについて」こちらをご一読ください。よろしく御願いします。
- ・第4章 Spring Bean定義ファイル
-
SpringEasyConfig.zip(5.2MB)
- 4.2 utilスキーマ
- 4.4 aopスキーマ
- 4.5 txスキーマ
SpringEasyConfigAnnotation.zip(4.7MB)
- 4.4.4 アノテーションを利用したAOPの設定
- 4.4.5 Spring管理外のBeanへのインジェクション(aop:spring-configuredタグ)
SpringCustomSchema.zip(3.2MB)
- 4.7 Bean定義のXMLスキーマを拡張する
- 4.8 XMLスキーマを拡張する
- ・第5章 Beanスコープ
-
SpringSessionScopeWithAOP.zip(4.7KB)
- ・第6章 Java Persistence API (JPA)
-
SpringEMBook.zip(7.2MB)
- ・第7章 SpringJDBC
-
SpringJdbc.zip(3.6MB)
- ・第8章 Spring Portlet MVC
-
SpringPortletMVC.zip(6.1MB)
- ・第9章 動的言語サポート
-
SpringEasyConfigLang.zip(7.2KB)
- ・第12章 Spring Web Flow
-
SpringWebFlow.zip(3.4MB)
- ・第13章 DWRを使ったAjax+Spring連携
-
SpringAjaxSample.zip(381KB)
- 13.1 Ajaxアプリケーション
SpringDWRSample.zip(176KB)
- 13.2 DWR (Direct Web Remoting)
SpringDWRSpringSample.zip(2.3MB)
SpringDWRSpringSample2.zip(2.3MB)
SpringDWRSpringSample3.zip(2.4MB)
- 13.3 DWR+Spring連携
SpringAjax.zip(6.5MB)
- 13.4 サンプルアプリケーション構築
- ・第14章 Spring JMS連携
-
SpringJMS.zip(6.6MB)
- ・第15章 Spring Remote連携
-
SpringRemote.zip(10MB)
- ・第16章 Spring Mail抽象レイヤ
-
SpringMail.zip(2.8MB)
- ・第17章 Springでのバッチ処理
-
SpringSchedulingHelloWorld.zip(2.9MB)
- 17.1.3 Java's Timer
- 17.1.4 Quartz
SpringAjax.zip(6.5MB)
- 17.1.5 従業員管理システムとバッチ処理
- ・第18章 Acegi Security編
-
AcegiConsole.zip(4.7MB)
- 18.2 Acegiの基本
AcegiWeb.zip(3.1MB)
- 18.3 Webアプリケーションへの適用