Spring Core

  • 什么是 Spring Core?

Spring core是用來負責(zé)發(fā)現(xiàn)、創(chuàng)建并處理bean之間的關(guān)系的一個工具包。core把bean的創(chuàng)建、bean的互相注入的方法定義完畢,上層服務(wù)只需要進行調(diào)用;提供功能但不調(diào)用就是spring core的存在意義。

  • 容器

創(chuàng)建并管理容器
創(chuàng)建:使用反射技術(shù),創(chuàng)建bean的實例
  • new ClassPathXmlApplicationContext(".xml")*:在classpath路徑下加載xml配置文件,完成Spring容器的加載;或者,采用注解方式時,需要在xml配置文件中使用context:component-scan/完成類掃描。
  • new AnnotationConfigApplicationContext("")*:基于注解配置的Spring容器加載方式。
管理:Spring默認采用單例的方式管理Bean
  • scope屬性為singleton(默認):每次創(chuàng)建的實例相同,獲取該Bean多次,為同一個對象(hashcode相同)。
  • scope屬性為prototype(每次至少創(chuàng)建兩個實例):每次創(chuàng)建不同的實例。
  • init-method:指定初始化方法。
  • destroy-method:指定銷毀方法。
  • IOC或DI

  • IOC:Inverse Of Control(控制翻轉(zhuǎn))。對于spring框架來說,就是由spring來負責(zé)控制對象的生命周期和對象間的關(guān)系。
  • DI:Dependency Injection(依賴注入)。IOC的一個重點是在系統(tǒng)運行中,動態(tài)的向某個對象提供它所需要的其他對象。這一點是通過DI來實現(xiàn)的。
  • 思想:將項目中的類(組件)交給Spring容器管理,按照組件之間彼此的依賴關(guān)系(采用xml配置文件或者注解),完成組件之間的注入,降低組件之間的耦合。
  • 三種注入方式
  1. 屬性注入(setter注入):將容器中的messageServiceBean,注入給當(dāng)前Controller的messageService屬性(通過該屬性的setter)。

<property name="messageService" ref="messageServiceBean"/>

  1. 構(gòu)造注入(使用有參構(gòu)造方法進行注入):將容器中的messageServiceBean,注入給當(dāng)前Controller的messageService屬性(通過該屬性的setter)。

<constructor-arg name="messageService" ref="messageServiceBean"/>
<constructor-arg name="defaultMsg" value="默認消息模板"/>

  1. 接口注入
  • 注解

  • 聲明bean

@Component:組件

@Controller:控制器組件

@Service:業(yè)務(wù)層組件

@Repository:數(shù)據(jù)訪問層組件

  • 聲明注入

Spring Framework:

@Autowired:自動裝配(默認按照類型自動裝配),按照當(dāng)前聲明的接口類型,在容器中查找該接口實現(xiàn)類對象bean,進行自動注入(裝配)。

@Qualifier:按照bean名稱自動裝配,與@Autowired注解配合使用。安照當(dāng)前指定的bean名稱,在容器中查找該名稱對應(yīng)的bean,進行自動注入(裝配)。

JSR:

@Resource:javax擴展包提供的注解,完成自動注入,默認按照類型自動注入,也可以使用name屬性進行按名稱自動注入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容