發佈 發佈流程的問題 方式一 1. 打開圖片進行本地預覽 2. 輸入文字 & 選擇相應的信息 3. 點擊發佈按鈕 3.1 將本地圖片上傳到 騰訊雲對象存儲中COS(oss),並將COS中的圖片地址返回。 3.2 將COS中的圖片URL和文字等信息一起提交到後臺。 BUG: 在3.2步驟時可能拿不到C ...
1.Bean Definition繼承
(1) Spring中的bean存在層級關係,我們可以定義子bean來繼承或覆蓋父bean中的某些屬性,從而節省編碼,在此處Spring運用到了模板設計模式,如下所示
//自定義了2個bean,ExampleA和ExampleB,註意,它們之間不存在繼承關係,我們這裡的繼承註意是Bean Definition繼承,也就是一個bean的一些屬性值可能跟另一個bean的某些屬性值相同,然後通過Bean Definition繼承來減少編碼,復用一下屬性值,僅此而已
public class ExampleA {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "ExampleA{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class ExampleB {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "ExampleB{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
<!-- xml配置文件 -->
<beans ...>
<bean id="exampleA" class="cn.example.spring.boke.ExampleA">
<property name="name" value="exampleA"></property>
<property name="age" value="20"></property>
</bean>
<!-- 在子bean標簽中定義parent屬性指向父bean,來繼承父bean中的屬性值 -->
<bean id="exampleB" class="cn.example.spring.boke.ExampleB" parent="exampleA">
<property name="name" value="exampleB"></property>
</bean>
</beans>
//列印這兩個bean,可以看到子bean exampleB中的age屬性值繼承了父bean exampleA的age屬性值,兩個值都是一樣的,為20,此外exampleB還覆蓋了父bean中的name屬性值,為exampleB,而非exampleA
ExampleA{name='exampleA', age=20}
ExampleB{name='exampleB', age=20}
子bean可以繼承並添加父bean中的scope, constructor argument values, property values以及method overrides from the parent,同時子bean也可以覆蓋掉父bean中的scope, initialization method, destroy method或者是static factory method settings為自己指定的值,其餘的一些屬性如:depends on, autowire mode, dependency check, singleton以及lazy init全部都取決於子bean而與父bean無關
(2) 模板父bean
<beans ...>
<!-- 如果一個父bean沒有指定class屬性,同時設置它的abstract為true,那麼它就是一個模板bean,來供其他的bean進行繼承,如同java里的抽象類 -->
<!-- 此時這個bean只能作為一個模板使用,其他的使用方式如使用getBean方法來獲取這個bean,都將返回錯誤,因為它沒有class屬性,不完整,同時容器在初始化時也會忽略這個bean -->
<bean id="template" abstract="true">
<property name="name" value="exampleA"></property>
<property name="age" value="20"></property>
</bean>
<!-- exampleB會繼承父bean template中name和age的屬性值 -->
<bean id="exampleB" class="cn.example.spring.boke.ExampleB" parent="template"></bean>
</beans>