• 公共属性的注入


    公共属性的注入:将bean中公共的属性提取出来单独作为一个bean并设置该bean的abstract属性为true,然后再有公共属性的bean中使用parent属性继承设置了abstract属性的bean。

    bean2类:

    package com.jzq.spring;

    public class Bean2 {

     private Bean3 bean3;
     private Bean4 bean4;
     private Bean5 bean5;
     
     public Bean3 getBean3() {
      return bean3;
     }
     public void setBean3(Bean3 bean3) {
      this.bean3 = bean3;
     }
     public Bean4 getBean4() {
      return bean4;
     }
     public void setBean4(Bean4 bean4) {
      this.bean4 = bean4;
     }
     public Bean5 getBean5() {
      return bean5;
     }
     public void setBean5(Bean5 bean5) {
      this.bean5 = bean5;
     }
     
    }

    bean3类:

    package com.jzq.spring;

    public class Bean3 {

     private int id;
     private String name;
     private String password;
     
     public int getId() {
      return id;
     }
     public void setId(int id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public String getPassword() {
      return password;
     }
     public void setPassword(String password) {
      this.password = password;
     }
     
    }

    bean4类:

    package com.jzq.spring;

    public class Bean4 {

     private int id;
     private String name;
     
     public int getId() {
      return id;
     }
     public void setId(int id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     
    }

    bean5类:

    package com.jzq.spring;

    public class Bean5 {

     private int age;
     
     public int getAge() {
      return age;
     }

     public void setAge(int age) {
      this.age = age;
     }
     
    }

    配置方法一:

       配置方法一:
           <bean id="bean2" class="com.jzq.spring.Bean2">
                 <property name="bean3" ref="bean3"/>
                 <property name="bean4">
                     <ref bean="bean4"/>
                 </property>
                 <property name="bean5" ref="bean5"/>
           </bean>
          
           <bean id="bean3" class="com.jzq.spring.Bean3">
               <property name="id" value="100"/>
               <property name="name">
                   <value>jack</value>
               </property>
               <property name="password" value="123"/>
           </bean>
          
           <bean id="bean4" class="com.jzq.spring.Bean4">
               <property name="id" value="1000"/>
               <property name="name" value="jack"/>
           </bean>
          
           <bean id="bean5" class="com.jzq.spring.Bean5">
               <property name="age" value="20"/>
           </bean>

    配置方法二:

    提取bean中的公共属性

     <!-- 提取bean中的公共部分 -->
        <bean id="beanAbstract" abstract="true">
            <property name="id" value="1000"/>
            <property name="name" value="jack"/>
        </bean>
       
        <bean id="bean2" class="com.jzq.spring.Bean2">
            <property name="bean3" ref="bean3"/>
            <property name="bean4">
                <ref bean="bean4"/>
            </property>
            <property name="bean5" ref="bean5"/>
        </bean>
          
        <bean id="bean3" class="com.jzq.spring.Bean3" parent="beanAbstract">
            <property name="password" value="123"/>
        </bean>
       
         <bean id="bean4" class="com.jzq.spring.Bean4" parent="beanAbstract"/>

    在bean标签中有属性scope,如果其值为singleton那么每次返回相同的实例;如果其值为prototype,每次返回不同的实例。

    配置方法三:按名称自动装配

    开启自动装配default-autowire,然后会按照javabean中的属性名称到applicationContext配置文件中去查找与属性名称相同的id,然后注入到javabean中。

    因为bean2里命名的属性为bean3,bean4,bean5,那么加载文件后会自动根据名称到配置文件中,加载注入相应的类。

    <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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
              default-autowire="byName"
               >

    开启自动装配

    <bean id="bean2" class="com.jzq.spring.Bean2"/>

    <bean id="bean3" class="com.jzq.spring.Bean3" parent="beanAbstract">
            <property name="password" value="123"/>
    </bean>
        
    <bean id="bean4" class="com.jzq.spring.Bean4" parent="beanAbstract"/>

    <bean id="bean5" class="com.jzq.spring.Bean5"/>

    配置方法四:根据类型自动装配

    <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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
              default-autowire="byType"
               >

    开启根据类型自动装配,那么就会根据数据的类型来装配对象。

  • 相关阅读:
    paramiko使用
    requests防止中文乱码
    RESTful架构
    关于pandas
    echarts基础使用
    跨站请求伪造CSRF原理
    js将方法作为参数调用
    Newtonsoft.Json解析json字符串和写json字符串
    图片压缩
    sql去重
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1959367.html
Copyright © 2020-2023  润新知