spring心得6--自動裝配知識點講解及案例分析
1.自動裝配:
spring3.2以上版本有四種自動裝配型別:
1).byName:尋找和屬性名相同的bean,若找不到,則裝不上。
2).byType:尋找和屬性型別相同的bean,找不到,裝不上,找到多個拋異常。
3).constructor:按照引數的型別裝配;找不到,裝不上;在有與bean例項類中屬性相同的id時,即使存在同一個型別的多個bean也不會拋異常,否則反之找到多個就會拋異常。
4)no:不使用自動裝配
自動裝配主要通過bean標籤的autowire屬性配置相應的自動裝配方式;使用byType和constructor自動裝配時,若找到多個符合條件的bean,會報異常,因此最好的方式是不用自動組裝。
2.自動裝配案例剖析
下面主要列出相關的spring配置檔案和主要的bean,用來測試的測試類和輔助就不再贅述了;
主要的bean例項
package www.csdn.spring.autowire;
public class EmpBean {
private String name;
private DeptBean deptBean;
private CompBean compBean;
public void setName(String name) {
this.name = name;
}
/*
* public void setDeptBean(DeptBean deptBean) { this.deptBean = deptBean; }
* public void setCompBean(CompBean compBean) { this.compBean = compBean; }
*/
@Override
public String toString() {
return "EmpBean [name=" + name + ", deptBean=" + deptBean
+ ", compBean=" + compBean + "]";
}
public EmpBean(DeptBean deptBean, CompBean compBean) {
super();
this.deptBean = deptBean;
this.compBean = compBean;
}
}
按byName自動裝配的配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="compBean" class="www.csdn.spring.autowire.CompBean">
<property name="name" value="DELL"/>
</bean>
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean>
<!-- 使用autoWrie自動裝配,改屬性值byName;
能讓其自動裝配的前提是bean例項中的屬性值名稱與配置檔案中引入的型別id一致-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byName">
<property name="name" value="楊凱"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
</beans>
按byType自動裝配的配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="compBean" class="www.csdn.spring.autowire.CompBean">
<property name="name" value="DELL"/>
</bean>
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean>
<!--
這裡只能出現一個deotBean,id名不一樣但是型別一樣,都是deptBean實體的;id="deptBean"或同型別的不同id都會拋異常
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean> -->
<!-- 使用autoWrie自動裝配,改屬性值byType;
按型別自動裝配,前提是同一個型別的只能有一個-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byType">
<property name="name" value="楊凱"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
</beans>
按constructor自動裝配的配置檔案
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="compBean" class="www.csdn.spring.autowire.CompBean">
<property name="name" value="DELL"/>
</bean>
<!-- 在spring3.2以上版本中:使用構造器自動裝配時,如果有一個id與bean例項中的屬性名相同的配置bean存在,雖然構造器自動裝配是按型別自動裝配的,
但是即使有多個相同型別的bean存在也不受影響;受影響的情況是:沒有與bean例項中的屬性名相同的配置bean存在,
又有多個相同型別的bean配置,就會拋異常-->
<bean id="deptBean" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean>
<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean>
<bean id="deptBean2" class="www.csdn.spring.autowire.DeptBean">
<property name="name" value="銷售部門"/>
</bean>
<!-- 使用autoWrie自動裝配,改屬性值constructor;構造器自動裝配就是按型別自動裝配
beam例項中必須結合構造器使用,如果沒有構造器自動裝配後注入不進去值,取出為空值-->
<bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="constructor">
<property name="name" value="楊凱"/>
<!-- <property name="comp" ref="compBean"/>
<property name="dept" ref="deptBean"/> -->
</bean>
</beans>
相關文章
- spring心得9--自動代理知識點講解及案例分析Spring
- 2、spring注入及自動裝配Spring
- DRM 分析及案例講解
- Spring自動裝配BeansSpringBean
- 自動裝配【Spring autowire】Spring
- Spring 自動裝配AutoWireSpring
- Spring@Autowired註解與自動裝配Spring
- Spring Boot 自動裝配原理Spring Boot
- Spring IOC容器-自動裝配Spring
- 運維注意事項及案例講解(個人心得)運維
- spring心得8--AOP各種通知案例講解.docSpring
- Spring知識點詳解Spring
- Spring實戰:裝配bean-自動化裝配beanSpringBean
- PHP:案例2--商品價格計算(案例分析+設計思路+知識點講解+原始碼+結果展示)PHP原始碼
- vertical-align知識點講解
- Javascript陣列的知識點講解JavaScript陣列
- Spring-04 Bean的自動裝配SpringBean
- SpringBoot自動裝配原理分析Spring Boot
- 常用的資料分析方法及案例講解
- Android Fragment用法知識點的講解AndroidFragment
- Thread執行緒知識點講解thread執行緒
- Spring入門(二):自動化裝配beanSpringBean
- Spring9:Autowire(自動裝配)機制Spring
- SpringBoot自動裝配-原始碼分析Spring Boot原始碼
- SpringBoot 自動裝配的原理分析Spring Boot
- 深入理解Spring框架的自動裝配原理Spring框架
- oracle心得2--單行函式理論講解與案例分析.docOracle函式
- spring知識點概述Spring
- jQuery心得1--jQuery入門知識串講1jQuery
- jQuery心得3--jQuery入門知識串講2jQuery
- iOS 10 適配知識點總結iOS
- Java培訓:Java四大知識點講解Java
- Java四大知識點講解,初學者必看!Java
- OCP知識點講解 之 什麼是Buffer Cache?
- spring心得10--使用Aspectj進行AOP開發介紹及案例分析Spring
- spring心得7--spring第二大特點AOP(面向切面)講解Spring
- Spring入門(八):自動裝配的歧義性Spring
- springboot自動裝配(1)---@SpringBootApplication註解怎麼自動裝配各種元件Spring BootAPP元件