精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

去字節面試,直接讓人出門左拐:Bean 生命周期都不知道!

開發 架構
IoC 很好地體現了面向對象設計法則之一 —— 好萊塢法則:“別找我們,我們找你”,即由 IoC 容器幫對象找相應的依賴對象并注入,而不是由對象主動去找。

大家好,我是樓仔!

Spring Bean 的生命周期,面試時非常容易問,這不,前段時間就有個粉絲去字節面試,因為不會回答這個問題,一面都沒有過。

如果只講基礎知識,感覺和網上大多數文章沒有區別,但是我又想寫得稍微深入一點。

考慮很多同學不喜歡看源碼,我就把文章分為 2 大部分,前面是基礎知識,主要方便大家面試和學習,后面是源碼部分,對源碼感興趣的同學可以繼續往后面看。

圖片

1. 基礎知識

1.1 什么是 IoC ?

IoC,控制反轉,想必大家都知道,所謂的控制反轉,就是把 new 對象的權利交給容器,所有的對象都被容器控制,這就叫所謂的控制反轉。

IoC 很好地體現了面向對象設計法則之一 —— 好萊塢法則:“別找我們,我們找你”,即由 IoC 容器幫對象找相應的依賴對象并注入,而不是由對象主動去找。

理解好 IoC 的關鍵是要明確 “誰控制誰,控制什么,為何是反轉(有反轉就應該有正轉了),哪些方面反轉了”。

圖片

誰控制誰,控制什么?

傳統 Java SE 程序設計,我們直接在對象內部通過 new 進行創建對象,是程序主動去創建依賴對象。而 IoC 是由專門一個容器來創建這些對象,即由 IoC 容器來控制對象的創建。

  • 誰控制誰?當然是 IoC 容器控制了對象;
  • 控制什么?主要控制了外部資源獲取(不只是對象,比如包括文件等)。

為何是反轉,哪些方面反轉了?

有反轉就有正轉,傳統應用程序是由我們自己在對象中主動控制去直接獲取依賴對象,也就是正轉,而反轉則是由容器來幫忙創建及注入依賴對象。

  • 為何是反轉?因為由容器幫我們查找及注入依賴對象,對象只是被動的接受依賴對象,所以是反轉;
  • 哪些方面反轉了?依賴對象的獲取被反轉了。

1.2 Bean 生命周期

對 Prototype Bean 來說,當用戶 getBean 獲得 Prototype Bean 的實例后,IOC 容器就不再對當前實例進行管理,而是把管理權交由用戶,此后再 getBean 生成的是新的實例。

所以我們描述 Bean 的生命周期,都是指的 Singleton Bean。

圖片

Bean 生命周期過程:

  • 實例化:第 1 步,實例化一個 Bean 對象;
  • 屬性賦值:第 2 步,為 Bean 設置相關屬性和依賴;
  • 初始化:初始化的階段的步驟比較多,5、6 步是真正的初始化,第 3、4 步為在初始化前執行,第 7 步在初始化后執行,初始化完成之后,Bean 就可以被使用了;
  • 銷毀:第 8~10 步,第 8 步其實也可以算到銷毀階段,但不是真正意義上的銷毀,而是先在使用前注冊了銷毀的相關調用接口,為了后面第 9、10 步真正銷毀 Bean 時再執行相應的方法。

整個執行流程稍微有些抽象,下面我們通過代碼,來演示執行流程。

1.3 執行流程

創建一個 LouzaiBean。

public class LouzaiBean implements InitializingBean, BeanFactoryAware, BeanNameAware, DisposableBean {

/**
* 姓名
*/
private String name;

public LouzaiBean() {
System.out.println("1.調用構造方法:我出生了!");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
System.out.println("2.設置屬性:我的名字叫"+name);
}

@Override
public void setBeanName(String s) {
System.out.println("3.調用BeanNameAware#setBeanName方法:我要上學了,起了個學名");
}

@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("4.調用BeanFactoryAware#setBeanFactory方法:選好學校了");
}

@Override
public void afterPropertiesSet() throws Exception {
System.out.println("6.InitializingBean#afterPropertiesSet方法:入學登記");
}

public void init() {
System.out.println("7.自定義init方法:努力上學ing");
}

@Override
public void destroy() throws Exception {
System.out.println("9.DisposableBean#destroy方法:平淡的一生落幕了");
}

public void destroyMethod() {
System.out.println("10.自定義destroy方法:睡了,別想叫醒我");
}

public void work(){
System.out.println("Bean使用中:工作,只有對社會沒有用的人才放假。。");
}
}

自定義一個后處理器 MyBeanPostProcessor。

public class MyBeanPostProcessor implements BeanPostProcessor {

@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("5.BeanPostProcessor.postProcessBeforeInitialization方法:到學校報名啦");
return bean;
}

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("8.BeanPostProcessor#postProcessAfterInitialization方法:終于畢業,拿到畢業證啦!");
return bean;
}
}

applicationContext.xml 配置文件(部分)。

<bean name="myBeanPostProcessor" class="demo.MyBeanPostProcessor" />
<bean name="louzaiBean" class="demo.LouzaiBean"
init-method="init" destroy-method="destroyMethod">
<property name="name" value="樓仔" />
</bean>

測試入口:

public class MyTest {
public static void main(String[] args) {
ApplicationContext context =new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
LouzaiBean louzaiBean = (LouzaiBean) context.getBean("louzaiBean");
louzaiBean.work();
((ClassPathXmlApplicationContext) context).destroy();
}
}

執行結果:

1.調用構造方法:我出生了!
2.設置屬性:我的名字叫樓仔
3.調用BeanNameAware#setBeanName方法:我要上學了,起了個學名
4.調用BeanFactoryAware#setBeanFactory方法:選好學校了
5.BeanPostProcessor.postProcessBeforeInitialization方法:到學校報名啦
6.InitializingBean#afterPropertiesSet方法:入學登記
7.自定義init方法:努力上學ing
8.BeanPostProcessor#postProcessAfterInitialization方法:終于畢業,拿到畢業證啦!
Bean使用中:工作,只有對社會沒有用的人才放假。。
9.DisposableBean#destroy方法:平淡的一生落幕了
10.自定義destroy方法:睡了,別想叫醒我

這個流程非常清晰,Bean 生命周期流程圖能完全對應起來。

1.4 擴展方法

我們發現,整個生命周期有很多擴展過程,大致可以分為 4 類:

  • Aware 接口:讓 Bean 能拿到容器的一些資源,例如 BeanNameAware 的setBeanName(),BeanFactoryAware 的setBeanFactory();
  • 后處理器:進行一些前置和后置的處理,例如 BeanPostProcessor 的postProcessBeforeInitialization()和postProcessAfterInitialization();
  • 生命周期接口:定義初始化方法和銷毀方法的,例如 InitializingBean 的afterPropertiesSet(),以及 DisposableBean 的destroy();
  • 配置生命周期方法:可以通過配置文件,自定義初始化和銷毀方法,例如配置文件配置的init()和destroyMethod()。

2. 源碼解讀

注意:Spring 的版本是 5.2.15.RELEASE,否則和我的代碼不一樣!!!

上面的知識,網上其實都有,下面才是我們的重頭戲,讓你跟著我走一遍代碼流程。

2.1 代碼入口

圖片

圖片

這里需要多跑幾次,把前面的 beanName 跳過去,只看 louzaiBean。

圖片

圖片

進入 doGetBean(),從 getSingleton() 沒有找到對象,進入創建 Bean 的邏輯。

圖片

圖片

2.2 實例化

進入 doCreateBean() 后,調用 createBeanInstance()。

圖片

進入 createBeanInstance() 后,調用 instantiateBean()。

圖片

圖片

圖片

圖片

圖片

走進示例 LouzaiBean 的方法,實例化 LouzaiBean。

圖片

2.3 屬性賦值

再回到 doCreateBean(),繼續往后走,進入 populateBean()。

這個方法非常重要,里面其實就是依賴注入的邏輯,不過這個不是我們今天的重點,大家如果對依賴注入和循環依賴感興趣,可以翻閱我之前的文章。

圖片

進入 populateBean() 后,執行 applyPropertyValues()

圖片

進入 applyPropertyValues(),執行 bw.setPropertyValues()

圖片

圖片

圖片

圖片

進入 processLocalProperty(),執行 ph.setValue()。

圖片

圖片

圖片

走進示例 LouzaiBean 的方法,給 LouzaiBean 賦值 name。

圖片

到這里,populateBean() 就執行完畢,下面開始初始化 Bean。

2.4 初始化

我們繼續回到 doCreateBean(),往后執行 initializeBean()。

圖片

圖片

圖片

走進示例 LouzaiBean 的方法,給 LouzaiBean 設置 BeanName。

圖片

回到 invokeAwareMethods()。

圖片

走進示例 LouzaiBean 的方法,給 LouzaiBean 設置 BeanFactory。

圖片

第一次回到 initializeBean(),執行下面邏輯。

圖片

這里需要多循環幾次,找到 MyBeanPostProcessor 的策略方法。

圖片

我們自己定義的后置處理方法。

圖片

第二次回到 initializeBean(),執行下面邏輯。

圖片

圖片

走進示例 LouzaiBean 的方法,執行 afterPropertiesSet()。

圖片

返回 invokeInitMethods(),執行下面邏輯。

圖片

進入 invokeCustomInitMethod(),執行下面邏輯。

圖片

走進示例 LouzaiBean 的方法,執行 init()。

圖片

第三次回到 initializeBean(),執行下面邏輯。

圖片

圖片

我們自己定義的后置處理方法。

圖片

到這里,初始化的流程全部結束,都是圍繞 initializeBean() 展開。

2.4 銷毀

當 louzaiBean 生成后,后面開始執行銷毀操作,整個流程就比較簡單。

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

走進示例 LouzaiBean 的方法,執行 destroy()。

圖片

回到 destroy(),執行下面邏輯。

圖片

圖片

圖片

走進示例 LouzaiBean 的方法,執行 destroyMethod()。

圖片

到這里,所有的流程全部結束,文章詳細描述所有的代碼邏輯流轉,你可以完全根據上面的邏輯,自己 debug 一遍。

3. 寫在最后

我們再回顧一下幾個重要的方法:

  • doCreateBean():這個是入口;
  • createBeanInstance():用來初始化 Bean,里面會調用對象的構造方法;
  • populateBean():屬性對象的依賴注入,以及成員變量初始化;
  • initializeBean():里面有 4 個方法,

先執行 aware 的 BeanNameAware、BeanFactoryAware 接口;

再執行 BeanPostProcessor 前置接口;

然后執行 InitializingBean 接口,以及配置的 init();

最后執行 BeanPostProcessor 的后置接口。

destory():先執行 DisposableBean 接口,再執行配置的 destroyMethod()。

對于 populateBean(),里面的核心其實是對象的依賴注入,這里也是常考的知識點,比如循環依賴,大家如果對這塊也感興趣,可以私下和我交流。

今天的源碼解析就到這,Spring 相關的源碼,還有哪些是大家想學習的呢,可以給樓仔留言。

這篇文章肝了我一個星期,原創不易,大家的點贊和分享,是我繼續創作的最大動力!

參考文章

三分惡的《Spring Bean生命周期,好像人的一生。。》:https://juejin.cn/post/7075168883744718856

責任編輯:武曉燕 來源: 樓仔
相關推薦

2020-05-22 08:11:48

線程池JVM面試

2023-03-30 07:34:10

Linux性能數據結構

2020-12-21 09:00:04

MySQL緩存SQL

2020-12-21 09:44:53

MySQL查詢緩存數據庫

2021-12-08 11:18:21

Spring Bean面試題生命周期

2018-10-17 14:50:08

2022-10-19 23:28:55

Spring生命周期Bean

2022-09-05 07:06:59

BeanSpring

2024-05-28 07:55:31

SpringBean用域

2023-12-28 09:59:37

Spring容器XML

2025-02-18 00:05:00

2020-07-29 09:53:09

VSCode編碼工具插件

2023-01-13 16:48:48

前端開發JavaScript

2021-11-12 10:05:19

跳表BAT面試

2021-07-22 09:28:35

DockerLinux命令

2024-10-22 09:03:35

前端signalAPI

2015-07-08 16:28:23

weak生命周期

2020-02-10 19:34:12

生命周期流程流程圖

2025-02-04 17:33:00

2022-06-19 14:38:55

Python
點贊
收藏

51CTO技術棧公眾號

gogo大尺度成人免费视频| 精品国产xxx| 欧美综合影院| 亚洲精品免费一二三区| 99免费在线观看视频| 国产精品.www| 亚洲区小说区图片区qvod按摩| 欧美日韩在线视频一区二区| 日韩免费av一区二区三区| 日本成人一级片| 久久久久久久久久久妇女| 日韩欧美综合在线| 亚洲中文字幕无码专区| 成年午夜在线| 国产精品一区专区| 欧美专区在线观看| 国产午夜精品理论片在线| 成人免费在线电影网| 在线观看免费成人| 精品人妻人人做人人爽| 亚洲婷婷在线观看| avtt香蕉久久| 在线看欧美视频| 亚洲欧美激情在线| 久久久久一区二区三区| 一区二区精品视频在线观看| 欧美午夜国产| 在线视频欧美性高潮| 乳色吐息在线观看| 欧美不卡高清一区二区三区| 亚洲美腿欧美偷拍| 日本精品一区二区三区高清 久久| 国产精品久久久久久在线| 99国产一区| 久久亚洲一区二区三区四区五区高| 无码人妻精品一区二区三区99不卡| 日韩经典一区| 午夜精品久久久久久久久| 亚洲精品欧美精品| 四虎影院在线播放| 国产精品一二三区在线| 国产精品爱久久久久久久| 久久久久久久久久综合| 日韩黄色大片| 亚洲毛片在线看| 日韩黄色一区二区| 国产不卡精品| 欧美在线播放高清精品| 亚洲不卡中文字幕无码| av中文字幕在线播放| 中文字幕乱码亚洲精品一区| 91丝袜脚交足在线播放| 一区二区三区亚洲视频| 久久久久久久尹人综合网亚洲| 欧美日韩成人在线视频| 亚洲波多野结衣| 天天干天天爽天天射| 视频在线观看入口黄最新永久免费国产 | 亚洲精品一区久久久久久| 精品人妻一区二区三区免费| 久久91视频| 老司机午夜精品视频| 久久久久久亚洲精品不卡| 三级影片在线看| 亚洲国产精品久久久天堂| 日韩亚洲成人av在线| 婷婷国产成人精品视频| 日韩夫妻性生活xx| 中文字幕欧美视频在线| 人与嘼交av免费| 欧美另类69xxxxx| 在线观看精品自拍私拍| 欧美黄色高清视频| 成人中文视频| 日韩中文在线中文网在线观看| 51妺嘿嘿午夜福利| 欧美老女人另类| 中文字幕在线视频日韩| 任我爽在线视频| 99久精品视频在线观看视频| 日韩视频在线免费| 日本青青草视频| 亚洲一级高清| 777777777亚洲妇女| 欧美特黄aaaaaa| 视频一区二区中文字幕| 国产精品视频久久久久| 91在线公开视频| 国产精品一二一区| 乱一区二区三区在线播放| 黄色在线免费观看大全| 中文字幕二三区不卡| 中文字幕成人一区| 草美女在线观看| 一本大道久久a久久精二百| 日本xxxx黄色| 日韩一二三区在线观看| 日韩精品视频免费在线观看| 97人妻人人揉人人躁人人| 国产韩日影视精品| 久久69精品久久久久久国产越南| 国产精品16p| 一区二区三区在线观看av| 日本一区福利在线| 国产一区二区久久精品| 国产精品久久久久久久精| 亚洲国内欧美| 国产日韩专区在线| 可以免费观看的毛片| 久久久国产一区二区三区四区小说| 亚洲成人第一| 午夜激情在线| 色婷婷综合五月| 婷婷激情小说网| 亚洲福利天堂| 超碰97人人做人人爱少妇| 日韩三级小视频| 美女网站色91| 高清国产一区| av在线免费观看网站| 亚洲一二三区视频在线观看| 国产野外作爱视频播放| 国产精品超碰| 色先锋资源久久综合5566| 国产精品500部| 国产在线一区观看| 欧美日韩免费高清| 激情在线视频播放| 欧美亚洲国产一卡| 亚洲国产精品自拍视频| 亚欧美无遮挡hd高清在线视频| 18性欧美xxxⅹ性满足| 国产日韩一级片| 国产亚洲一区二区三区四区| 日韩小视频网站| 亚洲网站三级| 在线成人免费网站| 一级一片免费看| 国产日本精品视频| 成人avav在线| 热久久最新网址| **国产精品| 日韩在线视频中文字幕| 久久久蜜桃一区二区| 99re视频这里只有精品| 免费人成自慰网站| 人人爱人人干婷婷丁香亚洲| 日韩视频免费看| 一级黄色片免费| 久久久国产综合精品女国产盗摄| 国产深夜男女无套内射| 北条麻妃一区二区三区在线观看| 久久国产天堂福利天堂| 国产女18毛片多18精品| 国产精品国产a| www.日本一区| 第九色区aⅴ天堂久久香| 国产成人小视频在线观看| 男同在线观看| 色综合久久88色综合天天6| 欧美bbbbb性bbbbb视频| 亚洲在线成人| 欧美性大战久久久久| xx欧美视频| 日韩欧美一区二区三区久久| 制服丝袜第一页在线观看| 欧美激情精品久久久六区热门| 国产精品中文在线| 黄色片免费在线| 色域天天综合网| 毛片网站免费观看| 性欧美videos另类喷潮| 国产视频观看一区| 国产网站在线免费观看| 欧美日韩精品福利| 精品国产成人亚洲午夜福利| 亚洲在线视频| 奇米精品在线| 国产黄色精品| 久久精品久久久久久| 91亚洲国产成人精品一区| ㊣最新国产の精品bt伙计久久| 毛片毛片毛片毛| 女主播福利一区| 成人xxxxx色| av色综合网| 视频免费一区| 日韩三区在线观看| 五月天婷婷丁香| 亚洲激情女人| 成人动漫视频在线观看完整版| 成人片在线看| 日韩你懂的在线观看| 日韩黄色精品视频| 久久久一区二区三区| 99视频在线免费| 欧美顶级大胆免费视频| 亚洲永久免费观看| av人人综合网| 日韩精品在线私人| 国产永久免费视频| 亚洲一区二区av在线| 日韩av手机在线播放| 午夜在线精品| 一区不卡视频| 欧美天堂影院| 66m—66摸成人免费视频| 成人影院免费观看| 91精品麻豆日日躁夜夜躁| 久热精品在线观看| 91免费精品国自产拍在线不卡| 182午夜在线观看| 亚洲综合自拍| 久久精品日韩精品| 亚洲日日夜夜| 97久久精品人搡人人玩| yourporn在线观看视频| 欧美一区二区三区播放老司机 | 久久影院视频免费| 最新av免费在线观看| 禁久久精品乱码| 欧美亚洲精品日韩| 精品中文字幕一区二区三区| 孩xxxx性bbbb欧美| 九七电影韩国女主播在线观看| 精品国产第一区二区三区观看体验| 毛片毛片女人毛片毛片| 亚洲欧美在线观看| 日本不卡视频一区| 国产一区二区三区黄视频| 欧美s码亚洲码精品m码| 亚洲电影影音先锋| 日本视频一区在线观看| 黄色成人美女网站| 成人激情综合网| 涩涩视频在线| 欧美激情按摩在线| 三级视频在线| 亚洲第一精品久久忘忧草社区| 国产日韩久久久| 欧美日韩亚洲天堂| 91久色国产| 天堂在线观看免费视频| 欧美人与z0zoxxxx视频| 成人a v视频| 天天综合色天天| 久久久久久久极品内射| 中文字幕一区二区三| 亚洲视频在线不卡| 奇米亚洲午夜久久精品| 日韩一级理论片| 国产日韩一区| 黄色三级中文字幕| 91精品1区| 中国一级黄色录像| 手机亚洲手机国产手机日韩| 欧美激情第一页在线观看| 亚洲精品3区| 精品免费国产| 国产精品tv| 亚洲xxxx在线| 免费观看亚洲视频大全| 成人黄色片网站| 四虎成人在线| 欧美综合在线第二页| 超碰一区二区| 欧美亚洲免费电影| 毛片在线网站| 668精品在线视频| 大黄网站在线观看| 欧美精品videos| 日本中文字幕中出在线| 不卡毛片在线看| 日本性爱视频在线观看| 九九久久综合网站| 少女频道在线观看免费播放电视剧| 久久精品成人一区二区三区| 国产区高清在线| 久久精品欧美视频| 二区三区四区高清视频在线观看| 久久久www成人免费精品张筱雨| 97在线观看免费观看高清| 久久精品国产亚洲7777| 超碰免费公开在线| 五月婷婷色综合| 欧美日韩一区二区三区在线视频| 久久亚洲黄色| 极品校花啪啪激情久久| 欧美18xxxx| 亚洲开发第一视频在线播放| 日韩情爱电影在线观看| 在线观看日韩羞羞视频| 91成人精品视频| 日本国产在线播放| 久久婷婷麻豆| 小泽玛利亚视频在线观看| 国模一区二区三区白浆| 久久久久久婷婷| 久久精品视频在线看| 欧美三级视频网站| 日韩毛片在线免费观看| 亚洲精品国产精品乱码| 欧美亚日韩国产aⅴ精品中极品| 亚洲图片视频小说| 欧美一区二区三区影视| 青青草免费在线| 色噜噜久久综合伊人一本| 国产在线高清理伦片a| 欧美黑人性视频| 伊人久久国产| 国产精品视频资源| 啪啪国产精品| 一区二区成人国产精品| 在线日本高清免费不卡| 亚洲 国产 图片| 成人h动漫精品| 日本人亚洲人jjzzjjz| 亚洲欧美日韩综合aⅴ视频| 国产精品乱码一区二区视频| 日韩一级免费观看| 免费在线看v| 超碰97人人做人人爱少妇| 日本三级一区| 国产中文字幕日韩| 欧美禁忌电影网| 亚洲国产一二三精品无码| 久久久青草婷婷精品综合日韩| www.午夜av| 国产精品热久久久久夜色精品三区| 久热这里有精品| 欧美影院午夜播放| 亚洲AV无码国产精品午夜字幕 | 无码人妻精品一区二区蜜桃网站| 亚洲一区日韩| 欧美色图校园春色| 国产精品美女www爽爽爽| 日韩av在线电影| 欧美高清视频不卡网| 国产毛片av在线| 在线免费观看一区| 日韩av综合在线观看| 精品成人免费| 曰本三级日本三级日本三级| 中文字幕精品一区二区三区精品| 国产稀缺真实呦乱在线| 日韩精品综合一本久道在线视频| 成人免费在线视频网| 91av视频在线| 一区二区三区亚洲变态调教大结局| 日本成人性视频| 青青草原综合久久大伊人精品优势 | 在线免费看黄色片| 亚洲日本va在线观看| 自拍偷拍精品视频| 亚洲人成网站在线播| 俺来俺也去www色在线观看| 91精品久久久久久久久| 欧美另类69xxxxx| 男操女免费网站| 国产校园另类小说区| 午夜影院在线看| 亚洲激情小视频| 久草在线视频福利| 99热在线国产| 欧美r级电影| 亚洲一级片网站| 国产精品欧美精品| 亚洲精品国产欧美在线观看| 伊人男人综合视频网| 写真福利精品福利在线观看| 美女被啪啪一区二区| 视频在线观看一区二区三区| 91国模少妇一区二区三区| 黑人巨大精品欧美一区二区三区| 亚洲人成色777777精品音频| 91黑丝在线观看| 色老板在线视频一区二区| 丁香婷婷综合激情| gogo大胆日本视频一区| 日韩av无码中文字幕| 亚洲精品久久久久中文字幕欢迎你 | 欧洲精品国产| 久久久蜜桃一区二区人| av资源在线免费观看| 欧美精品高清视频| 黄在线免费看| 国产精品毛片一区视频| 国产成人愉拍精品久久| 五月婷婷久久丁香| 性感美女福利视频| 国产精品一区=区| 婷婷伊人综合| 一级全黄裸体片| 色综合视频一区二区三区高清| 欧美xxx.com| 国产精品露脸自拍| 欧美激情黄色片| 免费黄色在线播放| 五月激情六月综合| 欧美精品videos另类|