まずは最初の一歩から。
毎回どうやって作ったのか忘れてしまうことが多いので、プロジェクトの初回作成手順をメモ。
環境は前回記事と同じ。

ちなみに、JavaとTomcatはEclipse4.4にくっついてきたものを使っております。


■新規プロジェクトの作成
1)新規
「動的 Web プロジェクト」を選択します。
次へ
2)動的Webプロジェクト
ターゲットランタイム : Tomcat8
動的Webモジュールバージョン : 3.1
構成 → 変更ボタンでカスタマイズ
  Java、JavaScript、JavaServer Faces、動的モジュール を選択
  それぞれバージョンは1.8、1.0、2.2、3.1を指定
次へ
3)Java
ビルド・パス上のソースフォルダー : 後で変更するのでそのまま
デフォルト出力フォルダー : target\classes
次へ
4)Webモジュール
コンテンツディレクトリー : src\main\webapp
web.xmlデプロイメント記述子の生成にチェック
次へ
5)JSF機能
JSF実装ライブラリ : ライブラリー構成を無効 ※実装ライブラリは後でmavenで入れる
そのほかの設定はそのまま(必要に応じて後で変更)
完了

■ソースフォルダの設定
作成したプロジェクトの設定>Javaのビルド・パス>ソースにてフォルダーの追加を行い、以下の3つのフォルダがソースフォルダとなるように設定変更
src\main\java
src\main\resources
src\test\java

■mavenの設定
今回は管理をmavenに任せます
プロジェクト右クリック>構成>Mavenプロジェクトに変換
そのまま完了
出来上がったpomファイルに以下を記載
※propertiesとdependenciesの中身だけ記載しています。あとは適宜設定を。

<properties>
<java-version>1.7</java-version>
<jsf-version>2.2.4</jsf-version>
<org.springframework-version>3.2.3.RELEASE</org.springframework-version>
<org.mybatis-version>3.2.8</org.mybatis-version>
<org.mybatis-spring-version>1.2.2</org.mybatis-spring-version>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
</properties>

<dependencies>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<!-- commons -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.0</version>
</dependency>

<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<exclusions>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- JFS -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsf-version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>${jsf-version}</version>
</dependency>

<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${org.mybatis-version}</version>
</dependency>

<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>

<!-- MyBatis-Spring adapter -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${org.mybatis-spring-version}</version>
</dependency>

<!-- CGlib -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
</dependency>
</dependencies>



■JSF-Springの設定
自動生成されたfaces-config.xmlに以下を追加
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>


また、web.xmlに以下を追加
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



■Springの設定ファイル作成
Springもずいぶん楽になったものですね…
設定ファイルにパッケージを指定するだけで、勝手にインジェクションしてくれるようです
今回は
 コントローラー用Bean : hogehoge.controller
 サービス用bean : hogehoge.service
 DAO用Bean : hogehoge.dao
 モデル用Bean : hogehoge.model
という構成にしました。トランザクション境界はServiceに設定する予定です
ただし、今回はまだDB接続先の設定をしないので、DAOとモデルの設定は設定しません。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

<!-- enable component scanning (beware that this does not enable mapper scanning!) -->
<context:component-scan base-package="hogehoge.controller,hogehoge.service" />

<!-- enable autowire -->
<context:annotation-config />

<!-- enable transaction demarcation with annotations -->
<tx:annotation-driven />
</beans>


これで動作に必要な最低限の設定は終了(のはず)