Springは「配置より規約」を採用してなく、Annotationを利用してどれをBeanとして扱うを決める。 SpringのBean定義用Annotaion @Component @Controller @Service @Repository ライフサイクルAnnotation @PostConstruct @PreDestory Spring3.0追加 @DependsOn…
PropertyPlaceholderConfigurerは、 propertiesファイルを読み取り、Springコンテナーのデータとして使える。 package app.propertyOverrideConfigurer; public class Japanese{ private int age; // 年齢 private String name; // 名前 public void setAge(…
PropertyPlaceholderConfigurerは、 propertiesファイルを読み取り、Springコンテナーのデータとして使える。 package app.beanFactoryPostFrocessor; public class Japanese{ private int age; // 年齢 private String name; // 名前 public void setAge(in…
BeanFactoryPostProcessorはSpringコンテナーの生成後の後処理をサポートする。 BeanFactoryPostProcessorのIF postProcessBeanFactory サンプル package app.beanFactoryPostFrocessor; public class Japanese{ private int age; // 年齢 private String na…
BeanPostprocessorはBeanの生成後の後処理をサポートする。 BeanPostProcessorはbeanの初期化処理前後に処理を入れることができ、beanに対して共通処理を行える BeanPostProcessorのIF postProcessBeforeInitialization postProcessAfterInitialization サン…
package app.spel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.spri…
Springフレームワークの本質はXML配置を通してJaveコードを実行することです。 ほぼ全てのjavaコードはSpring配置ファイルで管理できる。 要約 インスタンスを生成する : <bean.../> setterメソッド : <property.../> getterメソッド : PropertyPathFactoryBean OR <util:property-path.../> メソッド : Me</util:property-path.../></property.../></bean.../>…
singleton - クライアントはBeanのライフサイクルに関与できない prototype - コンテナーはBeanの生成後、ライフサイクルに関与できない DI後の行為 init-method属性 InitializingBeanインタフェース Bean破棄後の行為 destory-method属性 DisposableBeanイ…
下記定義は、人間は共通で目2個、口1個であることを定義してある。
コンストラクタによる生成 <constructor-arg.../> 静的factoryによる生成 : 工場Beanを生成する必要がない factory-method 動的factoryによる生成 : 先に工場Beanを生成する factory-bean factory-method </constructor-arg.../>
Spring3.0からXML定義だけではなくjavaクラスでも定義可能である。 Java配置クラス常用Annotaion @Configuration : class修飾、設定ファイルであること @Bean : method修飾、Beanであること @Value : field修飾、変数であること @Import : class修飾、他のJa…
<beans.../> : Spring設定ファイルのルート defalut-lazy-init defalut-merge defalut-autowire defalut-autowire-condidates defalut-init-method defalut-destory-method <bean.../> id : 唯一識別 class : クラス指定 name : カンマ区切りで複数指定可能 スコープ singoleton p</bean.../></beans.../>…
・BeanFactory - BeanFactoryを取得する ・ApplicationContextAware - ApplicationContextを取得する ・BeanNameAware - BeanのIDを取得する ApplicationContextAwareサンプル package app.aware; import org.springframework.beans.BeansException; import …
ApplicationContextによるイベント通知仕組み 1.ApplicationEventのサブクラスを実装する package app.event; import org.springframework.context.ApplicationEvent; public class SampleEvent extends ApplicationEvent { public SampleEvent(Object sou…
1.定義 beanMessage.xml
一般的にはSpringコンテナーとしてBeanFactoryのサブインタフェースであるApplicationContextを利用する。 拡張機能 singletonのBeanをデフォルトで初期化し、配置で初期化のキャンセルもできる MessageSourceインタフェースを継承し、国際化を提供する リソ…
SpringコンテナーはBean形式で配置、生成、管理(ライフサイクル)を行う。 BeanFactoryは最も基本的なSpringコンテナーのインタフェースである。 package app; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.spr…
SpringのDI方式は下記2種類がある コンストラクターによるDI setterによるDI ココを一部修正 package app.impl; import app.Pen; import app.Person; public class Japanese implements Person{ private int age; // 年齢 private String name; // 名前 priv…
SpringのDI(Dependency Inject - 外部注入)を試してみよう。 Springはインタフェース指向のプログラミングを推奨する。よって規範と実装を分離し疎結合を実現する。 1. 人とペンのインタフェースを定義する package app; public interface Person { public …
Strun2のtokenタグを使い2重送信(多重submit)を防止できる。 1. 入力画面を作成する(2重送信防止する画面) s-token.jsp <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage=""%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>s:</title></head></html>…
struts2のUIタグは、formタグと非formタグ2種類ある。 formタグ textfield head checkboxlist radio select optgoup updownselect doubleselect optiontransferselect token : 2重サブミット防止 非formタグ actionerror : getActionErrors() != nullの場合…
データタグはデータアクセス関連機能を提供する。Action内の属性、国際化など。 データタグ種類 s:action : Action実行、結果viewを読み込む s:bean : インスタンス生成 s:param : パラメータ提供 s:date : 日付出力、指定日付との差出力 s:push : Value Sta…
制御タグはプロセス制御、ValueStackの操作などを行う。 制御タグ種類 if elseIf/elseif else append : 集合結合 generator : 分割 iterator : 集合巡り merge : 集合結合 subset : 集合一部取得 sort : ソート if/elseif/else <%@ page contentType="text/h…
struts2のタグ分類。 ・非UIタグ 制御タグ データタグ ・UIタグ formタグ 非formタグ ・Ajaxタグ
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>WELCOME</title> </head> <body> Value Stack:<br> ユーザ名:<s:property value="username"/><br> パスワード:<s:property value="password"/><br> Stack Conte…</s:property></s:property></body></html>
1. interceptorを実装する package interceptor; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.inte…
Struts2では、actionメソッド前後の処理(interceptor)を定義できる。 ・interceptor定義関連要素 <interceptors..> : rootタグ <interceptor..> : interceptor定義 <interceptor-stack..> : interceptorのstack定義 <interceptor-ref..> : interceptor参照 <param..> : interceptorのパラメータ定義 <default-interceptor-ref..> : デフォルトinterceptor ・デフォルトのin</default-interceptor-ref..></param..></interceptor-ref..></interceptor-stack..></interceptor..></interceptors..>…
struts2-json-plugin-xx.xx.xx.jarを使い、ResultのタイプでJSONを使用できる。 sturts.xml 略 <constant name="struts.i18n.encoding" value="UTF-8"/> <package name="example" extends="json-default"> <action name="JSONExample" class="action.JSONExampleAction"> <result type="json"> </result></action></package></constant>
struts.xml 略・・・ <action name="register" class="action.RegisterAction"> <result type="stream"> <param name="contentType">text/html</param> <param name="inputName">inputStream</param> </result> </action> RegisterAction.java 略・・・ public String execute() throws E…
Struts2の検証は、検証ファイル以外にannotationと手動でも実現できる。 annotation利用 setterにannnotationをつける @RequiredStringValidator(key="name.requried") public String getName() { return this.name; } @RequiredStringValidator(message="an…