Spring容器のコンポーネント、およびカスタムプロパティエディタ

9315 ワード

Spring容器のコンポーネント、およびカスタムプロパティエディタ
記事の目次
  • Spring容器のコンポーネント、およびカスタム属性エディタ
  • 一、スプリング容器の中のコンポーネントと配合機構
  • 1.1部品
  • 1.2デバイス
  • 1.3配合機構
  • 二、`BeanDefinition`
  • 三、`InstantiationStrategy`
  • 四、`BenWrapper`
  • 5、プロパティエディタ(タイプ変換器)
  • 六、カスタム属性エディタ
  • 6.1カスタムプロパティエディタ
  • 6.2 登録プロパティエディタ
  • 6.3カスタム属性エディタ
  • 一、Spring容器の中のコンポーネントと配合メカニズム
    1.1マテリアルコンポーネントResourceBeanDefinitionPropertyEditor、および最終的Bean.
    これらは加工プロセスにおいて加工され、消費される部品であり、流水ラインに加工されたもののようです.
    1.2デバイスコンポーネントResourceLoaderBeanDefinitionReaderBeanFactoryPostProcessorInstantiationStrategyBeanWrapper.
    これらは流水ラインの異なる環節の加工設備のように、材料部品を加工処理します.
    1.3配合機構
    (1)ResourceLoader配置情報をロードし、使用Resourceこの配置ファイルリソースを示す.
    (2)BeanDefinitionReader指示されたプロファイルリソースを読み出しResource配置ファイルを解析し、各一つのBeanDefinitionオブジェクトに解析して、**BeanDefinitionRegistry*に保存する.
    (3)BeanFactoryPostProcessorBeanDefinition加工処理を行う場合の一:プレースホルダを使用した要素ラベルを解析し、最終的な配置値を得る.ケース2:取得PropertyEditor、Spring容器に登録されているプロパティエディタのレジストリにPropertyEditor登録する.
    (4)InstantiationStrategy着手Bean実用化作業;
    (5)BeanWrapperBeanの属性を設定する.
    (6)BeanFactoryPostProcessorBean後続の発送処理を行う.
    二、BeanDefinitionBeanDefinition似ているの鏡の中の人は、それぞれ対応しています.
    三、InstantiationStrategyInstantiationStrategy従順BeanDefinitionオブジェクト作成の担当Bean例.
    四、BeanWrapperSpring依頼BeanWrapperビーン属性の充填作業を完了する.
    五、プロパティエディタ(タイプ変換器)
    SpringはPropertyEditorRegistrySyooirtにおいて、一般的な属性タイプにデフォルトの属性エディタを提供しています.
    六、カスタム属性エディタ
    6.1カスタム属性エディタ
    /**
     *         
     *
     * @Date 2020/5/31
     * @Author lifei
     */
    public class CustomCarEditor extends PropertyEditorSupport {
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            if (text==null || text.indexOf(",")==-1){
                throw new IllegalArgumentException("           ");
            }
            String[] infos = text.split(",");
            Car car = new Car();
            car.setBrand(infos[0]);
            car.setColor(infos[1]);
            car.setMaxSpeed(Integer.parseInt(infos[2]));
    
            //      setValue()             
            setValue(car);
        }
    }
    
    6.2 プロパティエディタを登録
    
        <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
            <property name="customEditors">
                <map>
                    <entry key="com.hef.beans.Car" value="com.hef.editor.CustomCarEditor"/>
                map>
            property>
        bean>
    
    6.3カスタム属性エディタを使用する
    
        <bean id="bossCustom" class="com.hef.beans.Boss" p:name="customBoss" p:car="   ,  ,137"/>