この記事では、int、string、array、list、set、map、dateなどのプロパティの注入を示しています。
その中で、Springが提供する属性エディターで日付タイプの注入が達成されます。まず、5つのエンティティクラスが使用されます。
パッケージcom.jadyer.model; Import Java.util.date; java.util.listをインポートします。 java.util.mapをインポートします。 java.util.setをインポートします。 / ***一般的なプロパティの注入* @ @int、string、array、list、set、map、dateの注入*/ public class bean11 {private integer intvalue;プライベート文字列strvalue;プライベート文字列[] ArrayValue;プライベートリストListValue;プライベートセットSetValue;プライベートマップMapValue; private Date DateValue; / * 7つの属性のセッターとゲッター */}パッケージcom.jadyer.model; Public Class Bean22 {Private Bean33 Bean33; Private Bean44 Bean4422; //インジェクション:属性名とは無関係ですが、setbean44()private bean55 bean55に関連しています。 / * 3つの属性のセッターとゲッター */}パッケージcom.jadyer.model; Public Class Bean33 {private Integer id;プライベート文字列名;プライベートストリングセックス; / * 3つの属性のセッターとゲッター */}パッケージcom.jadyer.model; Public Class Bean33 {private Integer id;プライベート文字列名;プライベートストリングセックス; / * 3つの属性のセッターとゲッター */}パッケージcom.jadyer.model; Public Class Bean44 {private Integer id;プライベート文字列名;プライベートストリングセックス;民間整数年齢; /* 4つの属性のセッターとゲッターは、わずかに*/}パッケージcom.jadyer.modelです。 Public Class Bean55 {private string password; /*パスワードのセッターとゲッターはわずかに*/}次に、カスタムjava.util.dateタイプコンバーターがあります
パッケージcom.jadyer.util; java.beans.propertyeditorsupportをインポートします。 java.text.parseexceptionをインポートします。 java.text.simpledateformatをインポートします。 Import Java.util.date; /*** java.util.dateプロパティエディター。型コンバーターに相当します。文字列を日付に変換するタイプ * @see --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------カスタムプロパティエディターの事柄では、PropertyEditorSupportクラスを継承し、setastext()Method * @seeを上書きする必要があります。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- void setastext(string text)throws IllegalargumentException {System.out.println( "======= utildatePropertyeditor.Setastext()===========" +テキスト); try {date date = new simpledateFormat(pattern).parse(text); this.setValue(date); //注:ここに入れられるのはjava.util.dateオブジェクトです。したがって、出力時間はデフォルト形式です} catch(parseexception e){e.printstacktrace();新しいIllegalargumentException(テキスト)を投げる; //パラメーターを上向きに違法な例外を投げ続けます}}}すべてのエンティティクラスに使用されるApplicationContext-beans.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" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xsi:schemalocation = "http://ww.springframework http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/TX http://www.springframework/ default-lazy-init = "true"> <! - default-lazy-init = "true"属性は、indectionTest.javaクラスの49行で説明されています。詳細については - > <! - ********************************************************************************************************************************つ**************************************************************************************************************************************************************つ********************************************************************************************************************************つ**************************************************************************************************************************************************************つ********************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つ**************************************************************************************************************************************************************つtestinjectionjectionjectionjectionjections22()を実行する場合、デフォルトの出力は======== utildatePropertyEditor.setastextor.setastextor.setastextor()======= 2010年6月4日 - > <6月4日 - > <! - つまり、デフォルトラジーイニット= "true"は現時点に設定されていません。つまり、bean11のデフォルトスプリングの価値があります。構成ファイルのすべてのオブジェクトと注入 - > <! - この利点は、Spring構成ファイルの一部の構成が誤って記述されている場合、すぐに検出できることです - > <! - struts1.xの構成ファイルは、クラスが正しく書かれていない場合に問題がありません。実際に実行された場合にのみ、春には問題があります。関連属性を使用して、構成ファイルの初期化を遅らせることもできます。つまり、デフォルトラジーInit = "true" - > <! - つまり、実際に使用される場合、新しいオブジェクトに移動して属性に注入します。これには、怠zy、つまり、初期化の遅延 - > <! - <beans xsi:schemalocation = "http:// www ...." default-lazy-init = "true"> - > <! - アクションの範囲が構成ファイル全体です。同様に、各<bean>タグの怠zyinit属性も個別に構成できます - > <! - これは設定されていませんが、エラーをチェックするのに便利なBeanFactoryが作成されると、注入が完了します - > <! - **************************************************************************************************************************************************************というintに自動的に変換されます - > <プロパティ名= "strvalue" value = "hello_spring"/> <プロパティ名= "arrayvalue"> <list> <value> array11 </value> <balue> array22 </value> </list> name = "setValue"> <set> <value> set11 </value> <value> set22 </value> </set> </property name = "mapvalue"> <map> <entry key = "key11" value = "value11"/> <entry key = "key22" value = "value22"/>> </> <propation> <propert = "juncフォーマットは、applicationcontext-editor.xmlの構成と同じである必要があります - > </bean> <bean id = "bean22"> <プロパティ名= "bean33" ref = "bean33"/> <プロパティ名= "bean44" ref = "bean44"/> <プロパティ名= " <プロパティ名= "password" value = "123"/> </bean> </beans>
Public Entityクラスに使用されるApplicationContext-Common.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" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xsi:schemalocation = "http://ww.springframework http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/抽象豆を使用した構成 - > <! - 最初に、<bean>タグの抽象プロパティをtrueに指定し、他の<beans> - > <bean id = "abstractbean" abstract = "true"> <property name = "id" value = "2"/> <プロパティ名= "name" value = "zhang kile ="/> <bean "/> id = "bean33" parent = "abstractbean"/> <bean id = "bean44" parent = "abstractbean"> <property name = "age" value = "26"/> </bean> </beans> <! - bean33およびbean44のプロトタイプとbean44 abstractbean as as follows-> <値= "100"/> <プロパティ名= "name" value = "zhang san"/> <property name = "sex" value = "male"/> </bean> <bean id = "bean44"> <プロパティ名= "id" value = "100"/> <プロパティ名= "name" value = "zhang san"/> <財産名= " </bean> - >
java.util.dateプロパティエディターに使用されるApplicationContext-editor.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" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xsi:schemalocation = "http://ww.springframework http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework/ id = "utildatePropertyeditor"> <プロパティ名= "pattern" value = "yyyym mont ddd"/>> </bean> <! - ソースコードを確認し、customeditorconfigurerクラスの131行目にセットcustomeditorsメソッドが提供されているため、注入することができます - > < key = "java.util.date" value-ref = "utildatepropertyeditor"/> </map> </property> </beans> <! - 内部<beans> <! - utildatepropertyeditorを内部的に書くこともできます - > <! <bean> - > <! - 例は次のとおりです - > <! - <bean id = "customeditors"> <プロパティ名= "customeditors"> <map> <entry key = "java.util.date"> <bean> <property name = "pattern"
最後に、Junit3.8を使用して書かれた単位テストクラス
パッケージcom.jadyer.junit; junit.framework.testcaseをインポートします。 org.springframework.context.applicationcontextをインポートします。 import org.springframework.context.support.classpathxmlapplicationcontext; com.jadyer.model.bean11をインポートします。 com.jadyer.model.bean22をインポートします。 Public Class PropertyInjectionTestはTestCaseを拡張します{Private ApplicationContext Factory; @Override Protected void setup()throws Exception { /**** ====単一の構成ファイル==== **** // Factory = new ClassPathXMLApplicationContext( "ApplicationContext.xml"); /**** ==== ARRAYS ==== **** //を使用して複数の構成ファイルを読み取ります。 string [] {"applicationContext.xml"、 "applicationContext-editor.xml"}; // Factory = new ClassPathxMLApplicationContext(configlocations); /**** ======*マッチングパターンを使用して複数の構成ファイルを読み取る==== **** //業界で人気のあることわざ:コンベンションは構成よりも優れています// new ClassPathXMLApplicationContext( "ApplicationContext-*。xml"); } /***このメソッドは、INT、文字列、配列、リスト、セット、マップ、日付インジェクションを含む一般的な属性の注入を示しています* @see Spring Property Editorの助けを借りて日付タイプの注入が実装されている* /public void testinjection11(){// bean11 bean11 = new bean11(); //単純な新しい場合、その属性は注入されません。注入の前提条件は、Bean1111111 =(bean11)factory.getbean( "bean11")を注入する前に、IOC容器から取り出す必要があります。 //この時点でBean11はIOCコンテナから取得されるため、その依存関係はSystem.out.println( "bean11.intvalue =" + bean11.getintvalue())に注入されます。 System.out.println( "bean11.strvalue =" + bean11.getStrValue()); system.out.println( "bean11.arrayvalue =" + bean11.getarrayvalue()); System.out.println( "bean11.listvalue =" + bean11.getListvalue()); System.out.println( "bean11.setValue =" + bean11.getSetValue()); System.out.println( "bean11.mapvalue =" + bean11.getMapValue()); System.out.println( "bean11.datevalue =" + bean11.getDateValue()); } / ***この方法は、主にパブリック構成の抽象化を示して構成の量を減らす* / public void testinjection22(){bean22 bean22 =(bean22)factory.getbean( "bean22"); System.out.println( "bean22.bean33.id =" + bean22.getbean33()。getId()); system.out.println( "bean22.bean33.name =" + bean22.getbean33()。getname()); System.out.println( "bean22.bean33.sex =" + bean22.getbean33()。getSex()); System.out.println( "bean22.bean44.id =" + bean22.getbean44()。getId()); system.out.println( "bean22.bean44.name =" + bean22.getbean44()。getname()); System.out.println( "bean22.bean44.sex =" + bean22.getbean44()。getsex()); System.out.println( "bean22.bean44.age =" + bean22.getbean44()。getage()); System.out.println( "bean22.bean55.password =" + bean22.getbean55()。getPassWord()); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。