springMVC 4(11)注解でデータフォーマットを完了しました.


デマンドインスタンスの導入
実際の開発においては、日付書式、数値フォーマットを変換する必要があるということがよくあります.springでは、データのフォーマット処理は簡単に注釈することによって完成できます.例えば、現在はUser POJO類があります.package come.mvc.model.
import java.util.Date;

public class Person {
    private String name;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    @NumberFormat(pattern = "#.###k")
    private Long salary;

    //ignore getter and setter
    @Override
    public String toString() {
        return "Person [name=" + name + ", birthday=" + birthday + ", salary="
                + salary + "]";
    }
}
上の2つの注釈を通じて、1995-01-01のようなBirthdatの文字列形式とjava.util.Dateの日付形式を互いに変換し、salaryを15.000 Kのような文字列形式とLong型の15000を相互に変換したいです.私たちの需要を達成するためには、まず次のような知識が必要です.
AnnotationFormat Factoryインターフェース
これは私たちの注釈を属性タイプと関連付ける.その定義は以下の通りです.
public interface AnnotationFormatterFactory<A extends Annotation> {

    //       (       )          A  
    Set<Class<?>> getFieldTypes();

    //             
    Printer<?> getPrinter(A annotation, Class<?> fieldType);

    //           (  ) 
    Parser<?> getParser(A annotation, Class<?> fieldType);
}
Formatting CoversionService
ConversionServiceから引き継ぎ、運転時のタイプ転換とフォーマットサービスインターフェースは、運行期間のタイプ転換とフォーマットのサポートを提供します.その対応は工場種類のFormatting CoversionServiceFactoryBenが存在します.また、カスタム変換器を登録することもできます.その地位は前の文章で述べたCoversionServiceFactoryBenに相当します.私たちはそれをconversion-serviceのプロパティに組み立てる.以下は私たちの構成例です.
<!--   :annotation-driven conversion-service              -->
<mvc:annotation-driven />
<bean  class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="converters"><!--    converters   -->
    <property name="converters">
        <list>
            <bean class="com.mvc.convertor.MyConvertorFactory" />
        </list>
    </property>
</bean>
登録が終わったら、私達は私達のwebテストを行うことができます.
@Controller
public class PersonController {

    @RequestMapping("convert")
    public void convert( Person person){
        System.out.println(person);
    }
}
サーバーを起動して、私達は遊覧器の中で訪問します.コンソールの対応出力:http://localhost:8080/springMVC/convert?name=myName&birthday=1995-01-01&salary=5.000kPerson[name=myName、birthday=Sun Jan 01 00:00 CST 1995、salary=5]ここから、要求パラメータからUserオブジェクト属性へのフォーマット変換が成功したことが分かります.
一方、フォーマット変換器を単独で使用したい場合は、方法の参照に直接注釈を使用してもよく、次の例を参照してください.
@RequestMapping("convert2")
public void convert2(@DateTimeFormat( pattern = "yyyy-MM-dd") Date date,@NumberFormat( pattern = "#k") Long salary ){
    System.out.println(date);
    System.out.println(salary);
}
サーバーを起動して、私達は遊覧器の中でアクセスします.http://localhost:8080/springMVC/convert?name=myName&birthday=1995-01-01&salary=50kコンソール対応出力:
Sun Jan 01 00:00 CST 1995