容器相關(guān)概念
-
容器的主要作用是創(chuàng)建并管理bean
-
創(chuàng)建方式:通過反射技術(shù),創(chuàng)建bean實(shí)例
-
底層創(chuàng)建的模式為:工廠模式
-
容器中的bean實(shí)例,默認(rèn)為單例的方式管理.(配置文件中scope="prototype" 屬性,更改創(chuàng)建實(shí)例的方式)
-
創(chuàng)建Application容器有兩種方式:1.通過配置文件2.通過注解
加載配置文件創(chuàng)建容器
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config2.xml");
配置文件:聲明組件
<!--關(guān)聯(lián)一個具體的實(shí)現(xiàn)類 -->
<bean id="controllerBean" class="com.apesource.web.controller.OrderController">
<property name="orderService" ref="orderServiceBean"> </property>
</bean>
配置文件: 聲明注入name為屬性,ref為實(shí)體類
<bean id="orderServiceBean" class="com.apesource.service.OrderService">
<property name="accountDAO" ref="accountDAOBean"/>
<property name="iOrderDao" ref="orderDaoBean"/>
<property name="IProductDAO" ref="productBean"/>
</bean>
通過注解的方式創(chuàng)建Application容器(掃描所有的包)
ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.apesource");
設(shè)計理念
-
IOC(Inverse of Control)控制反轉(zhuǎn)
-
DI(Dependency Injection)依賴注入
IOC與DI是相同設(shè)計理念的不同描述:作用是降低類與類之間的耦合.之前的主動創(chuàng)建實(shí)例,現(xiàn)在通過容器按照組件之間的依賴關(guān)系,完成了組件之間的注入.(控制對象的主體反轉(zhuǎn)了.不再主動控制,通過配置文件或注解,等待容器注入.)
-
注入的三種方式:1.屬性setter注入 2.構(gòu)造注入 3.接口注入
注解
聲明bean的注解
-
@Component:組件
-
@Controller:控制器組件
-
@Service:業(yè)務(wù)邏輯組件
-
@Repository:數(shù)據(jù)訪問層組件
聲明注入的注解
Java標(biāo)準(zhǔn)注解
-
Resource:Javax包提供注解,自動注入,默認(rèn)按照類型注入,如果多個類型,可以市容Name屬性指定類型.
Spring Framework
Autowired:自動裝配,按照當(dāng)前聲明接口類型,查找實(shí)現(xiàn)當(dāng)前接口的對象bean,進(jìn)行注入
Qulifier:按照bean名稱配合Autowired使用,按bean名稱查找實(shí)現(xiàn)當(dāng)前接口的對象bean
接口的多個實(shí)現(xiàn)類:使用Resource注解或Autowired與Qulifier注解配合使用