最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring?IOC控制反轉原理詳解

 更新時間:2022年03月07日 15:42:40   作者:ZJH'blog  
這篇文章主要為大家詳細介紹了spring?IOC控制反轉原理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

IOC概念

  • 定義:控制反轉,把對象的創(chuàng)建和調用(傳統(tǒng)方式是通過new之后直接使用對象),交給Spring進行管理(依靠對象工廠通過注入的方式獲取對象)
  • 降低耦合度
  • 底層原理:xml解析、工廠模式、反射

參考

補:工廠模式和單例模式區(qū)別

單例模式(懶漢式,餓漢式)都只能創(chuàng)建一個指定類的唯一對象

工廠模式(一個接口,多態(tài)性的體現(xiàn))可以創(chuàng)建該接口的工廠下的所有類的唯一對象

IOC接口——實現(xiàn)IOC容器

IOC容器可以有多個,new幾個就有幾個IOC容器,一個容器綁定一個xml文件,一個xml中可以配置多個bean,容器可以關閉

1.BeanFactory

  • Spring的內部接口,不建議開發(fā)者使用
  • 懶漢式,加載配置文件的時候不創(chuàng)建對象

2.ApplicationContext

  • BeanFactory的子接口
  • 功能更強大,建議開發(fā)者使用
  • 餓漢式,加載配置文件即創(chuàng)建對象
  • 由于創(chuàng)建對象會耗費時間和資源,因此餓漢式可以把時間開銷放在項目啟動時

第三個是基于注解的獲取容器方式,利用反射而非解析xml配置

SpringBoot中獲取ApplicationContext的三種方式

1.@Autowired: 在任意被spring托管的類中注入

2.ApplicationContextAware接口:實現(xiàn)這個接口可以在普通類中獲取Spring的IOC容器

IOC操作管理Bean

xml配置bean

在bean.xml中配置了bean的屬性后,先解析xml得到IOC接口對象(IOC容器),然后通過容器來getBean,獲得對象

同時,ApplicationContext也可以換成其父接口BeanFactory,結果不受影響

DI:依賴注入(注入屬性)

兩種方法

set方法+property

有參構造+constructor

 工廠Bean和普通Bean

注解配置bean

注冊Bean

以下5個注解都可以創(chuàng)建Bean對象交給Spring的IOC容器進行管理

  • @Component:以下4個的元注解
  • @Service
  • @Controller
  • @Repository
  • @Configuration

因為元注解Component可以指定value=“別名”,所以以上5種注冊Bean的方式都可以起別名,一個接口多個實現(xiàn)類Bean的情況需要起別名,否則Spring無法判斷獲取哪個Bean

使用Bean

  • @Autowired:根據自動裝配
  • @Qualifier:根據別名裝配,要和@Autowired搭配使用
  • @Resource:即可根據類也可根據別名
  • @Value:注入普通類型屬性

兩個String實現(xiàn)Bean,起別名

Bean的配置

作用域:如何設置bean的單例or多例

scope屬性值:(常用singleton和prototype)

  • singleton:默認值,單例對象,餓漢式
  • prototype:多實例對象,懶漢式
  • request請求、session會話:不常用

在bean.xml中或者@Bean(scope="")中配置

生命周期:創(chuàng)建到銷毀

1.無參構造

2.調用set方法解析配置

3.調用bean的初始化方法

如果有配置了初始化方法,需要配置init-method=“初始化方法的名稱”

例如:在@Bean(initmethod=“xxx方法”)

4.獲取bean并使用

注解方法可以直接@Autowired注入bean,配置xml的方式通過

new ClassPathXmlApplicationContext(xxxx.xml)解析并獲取IOC容器之后getBean

5.bean的銷毀與銷毀時方法

springboot中的bean創(chuàng)建與銷毀

銷毀方法的配置@Bean(destroyMethod = “xxxxx”)

如果是配置在xml中,則

<bean id="  " class="   " destroy-method="   "></bean>

xml配置的Bean的關閉:關閉IOC容器即可

Bean掃描

spring中xml配置

spring和springboot中的注解配置

@ComponentScan

  • 被Component及其子注解標注的Bean需要用ComponentScan掃描到才能使用
  • SpringBootApplication啟動類包括了@ComponentScan
  • @ComponentScan默認掃描該類包下的所有Bean
  • @ComponentScan可以自定義basePackages、includeFilters、excludeFilters

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!    

相關文章

最新評論

泰州市| 大理市| 广安市| 静宁县| 浪卡子县| 长子县| 无极县| 高安市| 安徽省| 木兰县| 赫章县| 睢宁县| 连州市| 乌恰县| 政和县| 吉木萨尔县| 红河县| 建平县| 乐至县| 吉木萨尔县| 祥云县| 子长县| 泽库县| 新营市| 镇原县| 黄陵县| 随州市| 平远县| 常山县| 廊坊市| 吐鲁番市| 盐池县| 乐业县| 南部县| 河西区| 宝应县| 丰顺县| 龙川县| 张家港市| 永康市| 休宁县|