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

spring?IOC控制反轉(zhuǎn)原理詳解

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

IOC概念

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

參考

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

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

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

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

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

1.BeanFactory

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

2.ApplicationContext

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

第三個是基于注解的獲取容器方式,利用反射而非解析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,結(jié)果不受影響

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

兩種方法

set方法+property

有參構(gòu)造+constructor

 工廠Bean和普通Bean

注解配置bean

注冊Bean

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

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

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

使用Bean

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

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

Bean的配置

作用域:如何設(shè)置bean的單例or多例

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

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

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

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

1.無參構(gòu)造

2.調(diào)用set方法解析配置

3.調(diào)用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的關(guān)閉:關(guān)閉IOC容器即可

Bean掃描

spring中xml配置

spring和springboot中的注解配置

@ComponentScan

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

總結(jié)

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

相關(guān)文章

最新評論

吉隆县| 娱乐| 河间市| 甘泉县| 南雄市| 上思县| 平顺县| 哈密市| 新营市| 大港区| 定州市| 大洼县| 株洲市| 来宾市| 瑞丽市| 定边县| 秀山| 卓尼县| 康马县| 望谟县| 彰化县| 临夏县| 拉萨市| 什邡市| 即墨市| 桦川县| 深水埗区| 唐山市| 吉木萨尔县| 聂荣县| 平昌县| 安徽省| 沁水县| 勐海县| 横峰县| 综艺| 汽车| 边坝县| 徐汇区| 太谷县| 梁平县|