目次 > 第3章 Appendix > 3.3 ノウハウ > ビジネスロジックをPOJOで実装する
ビジネスロジックをPOJOで実装する
Server(Rich)版が提供するBLogicインタフェースを利用せずにPOJOで実装する場合は、POJOを実行するコントローラクラスを作成する必要がある。
チュートリアル本編の「2.3 単純なロジック」をPOJOで実装する例を示す。
手順
(1) POJOの実装と設定
- “jp.terasoluna.rich.tutorial.service.blogic.TutorialLogic”インタフェースを作成し、以下のように編集する。
package jp.terasoluna.rich.tutorial.service.blogic; import jp.terasoluna.rich.tutorial.service.bean.UserBean; import jp.terasoluna.rich.tutorial.service.bean.ResultData; /** * 入力クラスを結果クラスに格納するインタフェース。 */ public interface TutorialLogic { /** * @param in 入力DTO * @return 出力DTO * @throws Exception 例外 */ ResultData register(UserBean in) throws Exception; }
- TutorialLogicを実装した“jp.terasoluna.rich.tutorial.service.blogic.TutorialLogicImpl”を作成し、以下のように編集する。
package jp.terasoluna.rich.tutorial.service.blogic; import java.util.ArrayList; import java.util.List; import jp.terasoluna.rich.tutorial.service.bean.UserBean; import jp.terasoluna.rich.tutorial.service.bean.ResultData; /** * 入力クラスを結果クラスに格納するロジッククラス。 */ public class TutorialLogicImpl implements TutorialLogic { /** * @param params 入力DTO * @return 出力DTO * @throws Exception 例外 */ public ResultData register(UserBean params) throws Exception { ResultData result = new ResultData(); List<UserBean> userBeanList = new ArrayList<UserBean>(); UserBean userBean = new UserBean(); userBean.setId(params.getId()); userBean.setName(params.getName()); userBean.setAge(params.getAge()); userBean.setBirth(params.getBirth()); userBeanList.add(userBean); result.setUserBean(userBeanList); result.setTotalCount(userBeanList.size()); return result; } }
- “tutorial-businessLogic.xml”に、POJOクラスを定義する。
・・・略・・・ <!-- ======================================== 業務ロジック定義 --> <!-- POJO --> <bean id="tutorialService" class="jp.terasoluna.rich.tutorial.service.blogic.TutorialLogicImpl" scope="singleton" autowire="byType"> </bean> ・・・略・・・
(2) コントローラクラスの作成と設定
TerasolunaControllerを継承してアクションクラスを作成する。
- “jp.terasoluna.thin.tutorial.web.usermanager.action.InsertAction”を作成し、以下のように編集する。
package jp.terasoluna.rich.tutorial.service.controller; import jp.terasoluna.fw.web.rich.springmvc.controller.TerasolunaController; import jp.terasoluna.rich.tutorial.service.bean.UserBean; import jp.terasoluna.rich.tutorial.service.bean.ResultData; import jp.terasoluna.rich.tutorial.service.blogic.TutorialLogic; /** * 入力クラスを結果クラスに格納するロジッククラスを呼び出すコントローラクラス。 */ public class TutorialController extends TerasolunaController<UserBean, ResultData> { /** * 業務ロジック */ private TutorialLogic tutorialLogic = null; /** * 業務ロジックを設定する。 * @param tutorialLogic 業務ロジック */ public void setTutorialLogic(TutorialLogic tutorialLogic) { this.tutorialLogic = tutorialLogic; } /** * 業務ロジックを実行する。 * * @param params 入力DTO * @return 出力DTO * @throws Exception 例外 */ @Override protected ResultData executeService(UserBean params) throws Exception { //POJOを実行する return this.tutorialLogic.register(params); } }
- “tutorial-controller.xml”に、コントローラを設定する。
・・・略・・・ <!-- ======================================== コントローラ定義 --> <!-- POJO--> <bean name="/tutorialController" class="jp.terasoluna.rich.tutorial.service.controller.TutorialController" parent="pojoXmlRequestCastorViewController" scope="singleton"> <property name="tutorialLogic" ref="tutorialService"/> </bean> ・・・略・・・
POJOを実行する場合、parent属性にPOJOに対応したコントローラ抽象Bean定義を指定する。 また、手順1で作成したPOJOを定義する。
(3) 動作確認
- 「2.2 チュートリアル学習環境の整備 (5) アプリケーションの動作確認」を参照し、Tomcatを起動してブラウザでアクセスする。
- 下図のTERASOLUNAテストクライアント画面に、以下のデータを入力する。
- リクエストヘッダ:“requestName”
- 値:“tutorial”
- 要求電文
<?xml version="1.0" encoding="UTF-8"?> <UserBean> <id>1</id> <name>テラソルナユーザ1</name> <age>28</age> <birth>1978-01-14T12:34:56</birth> </UserBean>
- URL:http://localhost:8080/terasoluna-spring-rich-blank/secure/blogic.do
- 「送信」ボタンを押下すると、レスポンスが応答電文として表示されることを確認する。