日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘

發(fā)布時間:2024/2/28 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們在使用SpringBoot的時候,是不是覺得特方便,根本不需要我們?nèi)ヅ渲檬裁炊丝谔?#xff0c;應(yīng)用名稱,又比如我們再整合redis的時候,其實也不需要我們?nèi)ブ付ǘ丝谔?#xff0c;IP,都會有默認(rèn)的。是不是特方便。那么SpringBoot到底是怎么實現(xiàn)自動配置的呢。我們這里來分析下。

一、什么是自動配置

要了解SpringBoot的自動配置,我們得先理解啥是自動配置,字面上理解就是配置是自動化的,不需要我們額外的編配置文件,全部都有默認(rèn)的配置。若是我們的項目都用SpringBoot提供的默認(rèn)配置,那么理論上來說我們可以實現(xiàn)完全的零配置開發(fā)。“自動”的表現(xiàn)形式就是我們只需要引我們想用功能的包,相關(guān)的配置我們完全不用管。誤區(qū):我剛開始以為自動配置的意思是自動繼集成了了各種redis、mybatis插件,然后我就一直弄不懂為什么我明明不需要這些插件都還要給我集成。其實我是鉆牛角尖,只是自動幫我們初始化默認(rèn)配置文件,其實是配置類而已。相信這個誤區(qū)只有我這種愛鉆牛角尖的人才會多想。

二、SpringBoot加載自定義配置

我明要學(xué)習(xí)SpringBoot的自動化配置,那么我們來先學(xué)習(xí)一下SpringBoot是怎么加載自定義的配置的。如下新建一個最簡單的SpringBoot項目,當(dāng)然是maven的啦。可以參考我的博文二、快速入門-Hello SpringBoot2.0,這里我們就建立兩個類,一個是配置類Config,一個是啟動類App,還要建立一個配置文件application.yml,項目目錄如下:

我們這里要實現(xiàn)的就是,把配置文件定義的key值賦值給Config。

1、Config

@ConfigurationProperties(prefix="config")public class Config { private String username="隨筆博客"; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}

@ConfigurationProperties注解可以注入在application.properties配置文件中的屬性。

2、App

@SpringBootApplication@RestControllerpublic class App { @Autowired private Config config; @RequestMapping("/hello") public String hello() { System.out.println(config.getUsername()); return "hello"; } public static void main(String[] args) { SpringApplication.run(App.class, args); }}

3、application.yml

config: username: suibibk

4、在App這個類里注入Config類對象

有如下幾種方法。

A、在Config上使用注解@Component

@Component@ConfigurationProperties(prefix="config")public class Config {

B、在Config上使用注解@Configuration

@Configuration@ConfigurationProperties(prefix="config")public class Config {

C、在App中用@Bean

@Beanpublic Config config() { return new Config();}

D、在App上加入如下注解

@EnableConfigurationProperties(Config.class)public class App {

@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的類生效。

5、總結(jié)

上面四種方法都可以實現(xiàn)讀取配置文件的信息,并且這里默認(rèn)有一個值“隨筆博客”,到這里,是不是覺得可能SpringBoot也是用這種方式定義了超級多自動配置類?

三、SpringBoot啟動流程自動配置流程分析

由上面我們可以知道,也許SpringBoot也是在啟動的時候自動把很多組件默認(rèn)的配置加載進容器中了,這樣子我們再加入某一組件比如redis后就可以不需要指定配置(如果沒有個性化的話)。我們來一起跟蹤下吧。

1、啟動類App

@SpringBootApplicationpublic class App {

我們的啟動類就只用一個注解@SpringBootApplication就可以啟動我們的SpringBoot應(yīng)用了。那么我們跟蹤這個注解進去。

2、SpringBootApplication

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication {

這里我們主要要看兩個注解,一個是@SpringBootConfiguration,跟蹤進去如下

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Configurationpublic @interface SpringBootConfiguration {

我們看到了@Configuration注解,這個注解顧名思義,表明這是一個配置類,也就是說,我們的App也是一個配置類,這也就解釋了為什么上面我們再App上可以用如下方法注入bean

@Beanpublic Config config() { return new Config();}

其實上面@SpringBootConfiguration跟自動配置沒有啥關(guān)系,主要我們要看@EnableAutoConfiguration注解,跟蹤進去。

3、EnableAutoConfiguration

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration {

順便提一起,下面四個是元注解

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited

這里我們先看@AutoConfigurationPackage注解

Storing auto-configuration packages for reference later (e.g. by JPA entity scanner).保存自動配置類以供之后的使用,比如給JPA entity掃描器用來掃描開發(fā)人員通過注解@Entity定義的entity類。

也就是說,這個類跟@ComponentScan是不同的,@ComponentScan注解默認(rèn)就會裝配標(biāo)識了@Controller,@Service,@Repository,@Component注解的類到spring容器中,而@AutoConfigurationPackage注解主要掃描的是@Entity這種注解。

然后我們最主要的是看@Import(AutoConfigurationImportSelector.class)這個注解,@Import注解支持導(dǎo)入普通的java類,并將其聲明成一個bean,所以相當(dāng)于是將AutoConfigurationImportSelector類實例化為bean加入容器中。我們跟蹤進去。

4、AutoConfigurationImportSelector

public class AutoConfigurationImportSelector implements DeferredImportSelector, BeanClassLoaderAware, ResourceLoaderAware, BeanFactoryAware, EnvironmentAware, Ordered {

我們這里可以看DeferredImportSelector類,跟蹤進去

public interface DeferredImportSelector extends ImportSelector {

再跟蹤進去ImportSelector

public interface ImportSelector { /** * Select and return the names of which class(es) should be imported based on * the {@link AnnotationMetadata} of the importing @{@link Configuration} class. */ String[] selectImports(AnnotationMetadata importingClassMetadata);}

在SpringBoot中,若是用@Import注解導(dǎo)入的實現(xiàn)了ImportSelector接口的類,會在啟動的時候自動調(diào)用selectImports方法。這個我們其實可以測試下,寫一個類比如ConfigData,實現(xiàn)ImportSelector接口,然后在App啟動類上加入如下注解:

@Import(ConfigData.class)

你會發(fā)現(xiàn),在啟動App后會自動調(diào)用ConfigData的selectImports方法。那么在這里我們看一下同樣是實現(xiàn)了ImportSelector接口,當(dāng)然是通過實現(xiàn)DeferredImportSelector接口來實現(xiàn)的AutoConfigurationImportSelector類的selectImports方法,該方法也會在App啟動的時候被調(diào)用。

@Override public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!isEnabled(annotationMetadata)) { return NO_IMPORTS; } try { AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader .loadMetadata(this.beanClassLoader); AnnotationAttributes attributes = getAttributes(annotationMetadata); List configurations = getCandidateConfigurations(annotationMetadata, attributes); configurations = removeDuplicates(configurations); configurations = sort(configurations, autoConfigurationMetadata); Set exclusions = getExclusions(annotationMetadata, attributes); checkExcludedClasses(configurations, exclusions); configurations.removeAll(exclusions); configurations = filter(configurations, autoConfigurationMetadata); fireAutoConfigurationImportEvents(configurations, exclusions); return StringUtils.toStringArray(configurations); } catch (IOException ex) { throw new IllegalStateException(ex); } }

這里我們主要看如下語句

List configurations = getCandidateConfigurations(annotationMetadata, attributes);

因為這個語句的字面意思就是讀取配置,所以我們跟蹤進入這個方法中去。也是屬于這個類的方法(廢話)。

protected List getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) { List configurations = SpringFactoriesLoader.loadFactoryNames( getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you " + "are using a custom packaging, make sure that file is correct."); return configurations; }

我們再跟蹤進入 SpringFactoriesLoader.loadFactoryNames方法

public static List loadFactoryNames(Class> factoryClass, @Nullable ClassLoader classLoader) { String factoryClassName = factoryClass.getName(); return loadSpringFactories(classLoader).getOrDefault(factoryClassName, Collections.emptyList()); }

當(dāng)然繼續(xù)跟蹤進入loadSpringFactories方法

private static Map> loadSpringFactories(@Nullable ClassLoader classLoader) { MultiValueMap result = cache.get(classLoader); if (result != null) return result; try { Enumeration urls = (classLoader != null ? classLoader.getResources(FACTORIES_RESOURCE_LOCATION) : ClassLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION)); result = new LinkedMultiValueMap<>(); while (urls.hasMoreElements()) { URL url = urls.nextElement(); UrlResource resource = new UrlResource(url); Properties properties = PropertiesLoaderUtils.loadProperties(resource); for (Map.Entry, ?> entry : properties.entrySet()) { List factoryClassNames = Arrays.asList( StringUtils.commaDelimitedListToStringArray((String) entry.getValue())); result.addAll((String) entry.getKey(), factoryClassNames); } } cache.put(classLoader, result); return result; } catch (IOException ex) { throw new IllegalArgumentException("Unable to load factories from location [" + FACTORIES_RESOURCE_LOCATION + "]", ex); } }

這里看到加載了資源文件FACTORIES_RESOURCE_LOCATION,對應(yīng)的文件是

public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";

META-INF/spring.factories,也就是加載在全部META-INF下面的spring.fatories文件。當(dāng)然這里我們直接去查看自動配置包下面的這個文件,如下圖位置:

打開可以看到如下內(nèi)容

可以看到注釋#Auto Configure這里對應(yīng)的所有Class就是在SpringBoot啟動的時候?qū)崿F(xiàn)自動配置的類。我們可以舉個例子看一下是怎么實現(xiàn)自動配置的我們舉個例子

org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration

5、RedisAutoConfiguration

@Configuration@ConditionalOnClass(RedisOperations.class)@EnableConfigurationProperties(RedisProperties.class)@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })public class RedisAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate redisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean(StringRedisTemplate.class) public StringRedisTemplate stringRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; }}

可以很明顯的看到上面有注解@EnableConfigurationProperties(RedisProperties.class),這不就跟我們一開始說的一樣么,RedisProperties會自動實例化bean加入到IOC容器中。此時我們redis想用,就直接用啦,不需要我們寫配置文件。跟蹤RedisProperties進去可看到

@ConfigurationProperties(prefix = "spring.redis")public class RedisProperties { /** * Database index used by the connection factory. */ private int database = 0; /** * Connection URL. Overrides host, port, and password. User is ignored. Example: * redis://user:password@example.com:6379 */ private String url; /** * Redis server host. */ private String host = "localhost"; /** * Login password of the redis server. */ private String password; /** * Redis server port. */ private int port = 6379;

很明顯跟我們一開始加載自定義配置是一樣的,我們會有個默認(rèn)值,比如host為localhost,端口號為6379,當(dāng)然我們也可以在application.yml配置文件中覆蓋,前綴為spring.redis。

好了,到這里我們就應(yīng)該知道SpringBoot是如何實現(xiàn)自動化配置的了。就是在META-INF/spring.factories的這個文件中,配置好所有需要配置的類,比如redis,elasticsearch,freemarker,jdbc等等我們經(jīng)常要集成的組件的配置類,然后在容器啟動的時候就全部這些配置類注入到IOC容器中,有組件想使用的話就直接從容器中讀取對應(yīng)的配置,完全可以做到零配置,也可以做到自定義配置來覆蓋默認(rèn)配置。


順便提一下@ConditionalOnMissingBean注解,我們先看如下說明。

@ConditionalOnBean:當(dāng)容器里有指定的bean的條件下。

@ConditionalOnMissingBean:當(dāng)容器里不存在指定bean的條件下。

@ConditionalOnClass:當(dāng)類路徑下有指定類的條件下。

@ConditionalOnMissingClass:當(dāng)類路徑下不存在指定類的條件下。

@ConditionalOnProperty:指定的屬性是否有指定的值,比如@ConditionalOnProperties(prefix=”xxx.xxx”, value=”enable”, matchIfMissing=true),代表當(dāng)xxx.xxx為enable時條件的布爾值為true,如果沒有設(shè)置的情況下也為true。

也就是上面RedisAutoConfiguration下的代碼的作用是:

@Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate redisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; }

黨容器中沒有redisTemplate對象的時候,就這里實例化一個bean放入到容器中。

6、那自動配配置類如何實例化的呢?

也許有細(xì)心的兄弟,會覺得代碼里selectImports不是只是加載了配置的類名么,那么像RedisAutoConfiguration這些配置類什么時候?qū)嵗哪?#xff0c;其實這得還是歸功于ImportSelector接口的厲害了,實現(xiàn)這個接口的類,在@Import導(dǎo)入后,會自動調(diào)用selectImports方法,然后這個方法返回的類名數(shù)組都會自動實例化。也就是這樣,那些自動化配置類全部實例化了沒然后對應(yīng)的配置文件類也全部自動實例化了,太厲害了,拜服。ImportSelector接口的具體原理看來以后得好好研究。當(dāng)然這里也可以寫一個很簡單的例子證明下ImportSelector。如下

public class User { public void test() { System.out.println("隨筆博客"); }}public class DataConfig implements ImportSelector{ public String[] selectImports(AnnotationMetadata importingClassMetadata) { return new String[]{User.class.getName()}; }}

然后在App中使用@Import

@SpringBootApplication@RestController@Import(DataConfig.class)public class App { @Autowired private User user; @RequestMapping("/hello") public String hello() { user.test(); return "hello"; } public static void main(String[] args) { SpringApplication.run(App.class, args); }}

啟動訪問http://localhost:8080/hello, 可以看到控制臺打印隨筆博客。哈哈哈 到這里基本上搞明白了。

總結(jié)

通過上面分析,相信大家對SpringBoot自動化配置應(yīng)該很清楚了,無非就是在啟動的時候把各常用組件的配置文件類實例化到IOC容器中。我們根據(jù)上面的代碼跟蹤可以了解,SpringBoot的實現(xiàn)方式真的是太精妙了,不得不佩服,受益良多。

總結(jié)

以上是生活随笔為你收集整理的注解不自动导包_玩转SpringBoot2.X:SpringBoot自动配置原理大揭秘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

成人一区电影 | 福利视频一区二区 | 成人福利在线播放 | 亚洲手机av | 欧美综合国产 | 国产一级在线播放 | 欧美日韩免费一区二区三区 | 亚洲九九影院 | 99精品国产福利在线观看免费 | 西西www4444大胆在线 | 国产色视频网站 | 一色屋精品视频在线观看 | 国产护士在线 | 欧美性生活小视频 | 男女啪啪免费网站 | 三级小视频在线观看 | 成人久久综合 | 精品久久久久久综合日本 | 久久久蜜桃一区二区 | 久久婷婷国产色一区二区三区 | 久久97精品 | 精品国产一区二区三区四 | 国产精品久久久久久一二三四五 | 国产精品日韩久久久久 | 日韩av不卡在线观看 | 国产韩国日本高清视频 | 伊人伊成久久人综合网站 | 久久 国产一区 | 亚州精品在线视频 | 色大片免费看 | 91探花在线 | 在线观看成人网 | 国产精品第7页 | 9797在线看片亚洲精品 | 亚洲丝袜中文 | 日韩成人免费观看 | 国产精品久久久久久久免费大片 | 亚洲欧美999 | 在线观看国产永久免费视频 | 99热这里只有精品国产首页 | 亚州激情视频 | 国产麻豆精品一区二区 | 欧美日韩高清国产 | 国内精品视频久久 | 成人av电影在线观看 | 日韩小视频网站 | 麻豆久久 | 亚洲最大的av网站 | 丁香午夜 | 久草爱视频 | 伊人永久在线 | 日本中文字幕在线一区 | 最近中文字幕高清字幕在线视频 | .国产精品成人自产拍在线观看6 | 国产精品一区二区在线观看免费 | 日韩一区二区三区在线观看 | 啪啪精品| 黄色三级av| 成人黄色电影视频 | 99免费观看视频 | 国产精品18p | 在线观看国产中文字幕 | 美女久久久久久久 | 日本丶国产丶欧美色综合 | av+在线播放在线播放 | 欧美久久电影 | 久久久久亚洲精品成人网小说 | 亚洲乱码精品 | 久久99久国产精品黄毛片入口 | 国产小视频在线免费观看 | 国产精品久久久久久久久久ktv | 日韩免费在线 | 欧美a级在线免费观看 | 免费一级日韩欧美性大片 | 五月综合婷 | h久久| 日韩精品久久一区二区 | av大全在线看 | 狠狠色狠狠色 | 麻豆传媒视频在线免费观看 | 超碰97网站 | 日韩av图片 | 九九热在线观看视频 | 中文字幕在线视频一区 | 亚洲va欧美va国产va黑人 | 深爱婷婷 | 国产福利专区 | 久久久国产一区二区三区四区小说 | 欧美最爽乱淫视频播放 | 91精品视频免费 | 亚洲不卡av一区二区三区 | 成人a视频在线观看 | 欧美一区免费在线观看 | 亚洲欧美国产精品va在线观看 | 久久伊人八月婷婷综合激情 | 欧美综合在线视频 | 国产精品久久二区 | 国产一区二区中文字幕 | 最新真实国产在线视频 | 日韩免费网址 | 国产v视频| 亚洲免费av电影 | 国产一区二区精品久久91 | 天天摸天天干天天操天天射 | 日韩免费在线观看 | 国产精品一区二区美女视频免费看 | 久久精品国产亚洲a | 国产免费成人av | 天天操欧美 | 91成人在线免费观看 | 天天操操操操操操 | 在线免费观看黄 | 国产精品第2页 | 999色视频 | 天天躁日日躁狠狠 | 天天看天天干 | 亚洲精品乱码久久久久久 | www.色的 | 久久久久国产精品免费网站 | 婷婷激情综合五月天 | 日韩精品一区二区三区三炮视频 | 四季av综合网站 | 午夜影院先 | 亚洲精品激情 | 中文字幕在线看视频 | 91综合色 | 久久免费国产精品1 | 精品久久国产 | 久久视频免费在线观看 | 国产片免费在线观看视频 | 久久精品99国产 | 深夜精品福利 | 激情综合色播五月 | 黄色成年片 | 97操操操 | 视频91| 国产综合在线视频 | 国产一级片久久 | 97精品久久 | 婷婷av资源 | 久久精品免费播放 | 日韩视频www | 中文字幕乱码亚洲精品一区 | 精品v亚洲v欧美v高清v | 久草视频国产 | 中文视频在线看 | 欧美 另类 交 | 日躁夜躁狠狠躁2001 | 久久久精选 | 国产精品一区二区三区视频免费 | 亚洲视频在线免费观看 | 黄色日批网站 | 国产在线精品播放 | av福利在线导航 | 黄p网站在线观看 | a亚洲视频| 久久免费a | 中文字幕色播 | 天堂成人在线 | 久久成| 黄色免费高清视频 | 欧美日韩首页 | www.五月婷| 免费在线观看成人小视频 | 欧美日韩3p | 亚洲涩涩一区 | 色爱区综合激月婷婷 | 国产又粗又猛又黄 | 最新中文字幕在线观看视频 | a电影在线观看 | 久久欧美精品 | 日韩精品免费在线观看视频 | 国内久久精品视频 | 狠狠躁夜夜躁人人爽超碰91 | 91久久久久久久一区二区 | 91理论电影 | 亚洲三级黄 | 久久久久久久久久久久久久免费看 | 亚洲精品999 | 国产精品久久久久三级 | 国产精品成人久久久 | 欧美日韩精品在线视频 | 黄色av一级片 | 特级黄录像视频 | 美女免费视频黄 | 国内精品久久久久久久久久久 | 视频国产在线观看18 | 国产亚洲精品女人久久久久久 | 国产黄色大片 | 一级欧美日韩 | 不卡av电影在线 | 欧美激情综合色 | 国产一级二级视频 | 亚洲精品黄 | 色综合天天在线 | 日韩中字在线观看 | 麻豆国产精品视频 | 天天色天天色天天色 | 亚洲日本va在线观看 | 9999毛片| 91精品免费 | 精品福利视频在线观看 | 国产资源精品在线观看 | 草莓视频在线观看免费观看 | 黄免费在线观看 | 国产91免费在线观看 | 欧美成人区 | 亚洲精品字幕在线观看 | 国产精品久久久一区二区 | 国产精品久久网 | 国产这里只有精品 | 久久久久综合网 | 国产精品av免费在线观看 | 日韩在线三级 | 国产69精品久久app免费版 | 国产亚洲在线 | 日本成人黄色片 | 午夜黄色影院 | 亚洲在线视频播放 | 欧美一级大片在线观看 | 日p在线观看 | 国产成人av福利 | 粉嫩av一区二区三区免费 | 黄色最新网址 | 丁香六月av | 中文资源在线播放 | 色黄久久久久久 | 日韩av成人在线观看 | 亚洲精品国产精品国自产 | 精品久久久久久亚洲综合网站 | 美女国产在线 | 玖玖玖影院 | 在线av资源 | 黄色一级大片在线免费看国产一 | 国产精品久久久久久久久婷婷 | 中文字幕亚洲欧美 | 久久在线视频在线 | 色资源在线观看 | 六月丁香婷婷久久 | 正在播放国产一区二区 | 少妇bbbb | 欧美成人xxxxx | 男女日麻批 | av网站免费线看精品 | 日日干av | 视频国产在线观看18 | www.福利视频| 在线观看一区二区精品 | 亚洲婷婷综合色高清在线 | 色婷婷激婷婷情综天天 | 91久久国产露脸精品国产闺蜜 | 色免费在线 | 久久亚洲婷婷 | 奇米影视在线99精品 | 国产精品毛片一区二区在线看 | 亚洲成人一二三 | 日韩艹 | 亚洲九九九在线观看 | a级国产毛片 | 在线免费观看羞羞视频 | 久久伊人操 | 久久国产影视 | 欧美精品乱码久久久久 | 久久久久国产精品免费网站 | 成人一区二区三区在线观看 | 狠狠色婷婷丁香六月 | 午夜精品久久久久久久99无限制 | 国产午夜三级一二三区 | 成人av资源 | 欧美一级特黄aaaaaa大片在线观看 | 99久久精品一区二区成人 | 国产精品剧情在线亚洲 | 精品国产aⅴ麻豆 | 久久免费的视频 | 国产精品久久久久久久久久久久 | 狠狠狠的干| 六月婷操 | 波多野结衣在线观看一区 | 国产一级a毛片视频爆浆 | 一级黄色片在线 | 亚洲高清色综合 | 免费看黄在线观看 | 中文字幕在线观看免费高清电影 | av电影中文字幕在线观看 | 精品91在线 | 精品主播网红福利资源观看 | 日韩精品中文字幕在线 | aaaaaa毛片| 久热国产视频 | 欧美日韩国产色综合一二三四 | 国产91精品在线播放 | 精品国产久 | 综合天天久久 | 很黄很黄的网站免费的 | 国产精品嫩草在线 | 国产一区二区三区高清播放 | 天天干亚洲| 亚洲乱码在线 | www毛片com| www久草| 日韩午夜大片 | 久久99九九99精品 | 尤物97国产精品久久精品国产 | 亚洲精品自拍 | 日批视频在线播放 | 欧洲精品久久久久毛片完整版 | 亚洲视频精选 | 精品国产乱码久久久久久浪潮 | 中文字幕在线观看你懂的 | 深爱激情五月网 | 97精产国品一二三产区在线 | www.久久久com | 日韩精品一区二区三区水蜜桃 | 99久久精品无码一区二区毛片 | 99 视频 高清 | 97视频免费看 | 91九色porny在线 | 91精品啪在线观看国产 | 国产精品资源在线 | 91香蕉视频| 久久精品久久99精品久久 | 99久久99久久综合 | 国产高清不卡一区二区三区 | 美女黄频在线观看 | 久久久久久蜜av免费网站 | 91人人网 | 国产精品久久久久久久久费观看 | 一级成人在线 | 五月亚洲婷婷 | 国产玖玖视频 | 国产91在线观看 | 久久全国免费视频 | 国产视频 亚洲视频 | 成人免费xyz网站 | 激情av资源 | 久久免费国产电影 | 欧美精品视 | 国产裸体视频网站 | 91精品一区二区三区蜜臀 | 91麻豆视频 | 九九热免费在线观看 | 国产一区在线免费观看视频 | 国产日本在线观看 | 午夜精品久久久久久久99水蜜桃 | 亚洲综合欧美精品电影 | 一区二区在线不卡 | 六月丁香伊人 | 欧美一级日韩三级 | 日本黄色大片免费 | 日韩av有码在线 | 黄色三级免费片 | 国产黑丝一区二区三区 | 国产在线播放一区 | 国产999精品久久久久久麻豆 | 免费a级黄色毛片 | 亚洲自拍自偷 | a√天堂资源 | 日本丰满少妇免费一区 | 久久99精品久久久久久三级 | 亚洲日日日 | 91九色丨porny丨丰满6 | 91在线精品观看 | 久久夜色精品国产欧美乱 | 国产探花视频在线播放 | 国产二区电影 | av丁香花| 日韩在线三级 | 亚洲一区二区黄色 | 91精品老司机久久一区啪 | 欧美日韩高清一区 | 国产精品1区 | 欧美精品久久天天躁 | 91免费观看国产 | 在线91视频| 干干日日| 精品久久网 | 中文字幕色婷婷在线视频 | 日韩欧美一区二区三区黑寡妇 | 国产涩涩网站 | 人人澡超碰碰97碰碰碰软件 | 久久精品一区二区三 | 粉嫩av一区二区三区四区 | 中文字幕免费久久 | 亚洲成人精品国产 | 五月婷婷综合在线 | 国产专区精品视频 | 人人插人人 | 麻豆视频免费在线播放 | www.夜夜操.com| 日本爱爱片| 免费av网站在线看 | 夜夜夜夜夜夜操 | 96久久久| 欧美日韩亚洲第一页 | 天天操操操操操操 | 国产精品嫩草影院123 | 国产一级91 | 久久成人麻豆午夜电影 | 欧美三级在线播放 | 久久99精品久久久久婷婷 | 亚洲精品天天 | 国产综合小视频 | 久久理论片 | 成人午夜免费剧场 | 婷婷免费在线视频 | 日韩在线观看a | 久久99久久99精品 | 色视频网站在线 | 国语精品久久 | 在线观看视频你懂得 | 久久久久久久国产精品视频 | 亚洲精品一区二区在线观看 | 国产在线1区 | 国产精品99久久久久的智能播放 | 丰满少妇久久久 | 天天色欧美 | 国产在线精品国自产拍影院 | 特级xxxxx欧美| 国产一级免费观看视频 | 69中文字幕 | 久久国产a | 九九热有精品 | 狠狠干在线 | 欧美成人xxxxxxxx | 日韩久久一区 | 国产一区二区三区高清播放 | 国产黑丝一区二区 | 国产视频 亚洲精品 | 蜜臀一区二区三区精品免费视频 | 射射射av | 欧美动漫一区二区三区 | 欧美色插| 国产精品九九九九九九 | 91精品伦理 | 国产传媒一区在线 | 免费视频成人 | 在线观看国产福利片 | 美女福利视频一区二区 | 国产91国语对白在线 | 免费观看www7722午夜电影 | 成人黄色大片 | 国产精品网站一区二区三区 | 日韩精品视频在线观看网址 | 色老板在线视频 | 91网站在线视频 | 国产成人三级在线播放 | 伊人国产在线观看 | 国产一级在线视频 | 亚洲免费成人av电影 | 精品久久久久免费极品大片 | 日韩免费一区二区三区 | 亚洲国产成人精品电影在线观看 | 天天操天天干天天爱 | 日韩超碰在线 | 国产精品黄色影片导航在线观看 | 视频二区在线 | 国产中文字幕视频在线观看 | 娇妻呻吟一区二区三区 | 麻豆传媒电影在线观看 | 国产精品免费大片视频 | 欧美国产三区 | 日韩精品91偷拍在线观看 | 九色porny真实丨国产18 | 久操视频在线观看 | 成人一区二区三区在线观看 | 91视频88av| 97成人精品区在线播放 | 米奇四色影视 | 日韩试看 | 丁香九月激情 | 最近中文字幕在线 | 国产精品久久久久久模特 | 精品国产精品久久 | 国产亚洲成人网 | 婷婷丁香av | av不卡中文字幕 | 超碰999 | 色综合天天在线 | 99在线热播精品免费 | 97av视频| 亚洲免费不卡 | 日韩精品欧美视频 | 成人高清在线 | 亚洲成a人片综合在线 | 一级黄色片在线 | 日韩毛片久久久 | 免费看av片网站 | 国产二区视频在线观看 | 久久私人影院 | 91麻豆精品国产91久久久久久久久 | 亚洲专区路线二 | 免费在线观看黄色网 | 精品一区精品二区高清 | 久久精品亚洲精品国产欧美 | 亚洲国产日韩一区 | 91成人精品一区在线播放 | 丁香婷婷久久久综合精品国产 | 六月色播 | 808电影免费观看三年 | 韩日三级av | 在线中文字幕播放 | 欧美日韩在线免费观看 | 久久免费福利视频 | 免费在线观看av电影 | 在线免费观看视频一区二区三区 | 午夜国产福利在线 | 91九色国产蝌蚪 | 国产精品美女久久久久久2018 | 国产精品免费久久久久 | 亚洲激情小视频 | 国产精品久久久久久久久软件 | 国产一区二区精品久久91 | 天天弄天天干 | av免费观看网站 | 黄色毛片电影 | 久久99婷婷 | 色综合天天狠天天透天天伊人 | 麻豆一精品传二传媒短视频 | 中文字幕在线观看网址 | 91精品久久香蕉国产线看观看 | 成人久久久电影 | 国产99久久九九精品 | 在线亚洲精品 | 粉嫩av一区二区三区入口 | 狠狠色狠狠色 | 狠狠色综合网站久久久久久久 | 亚洲国产精品久久久久久 | a黄在线观看 | 国产91精品欧美 | 91精品黄色 | 国产特级毛片aaaaaa高清 | 日韩天天操 | 免费网址在线播放 | 人人擦 | 久久久精品在线观看 | 国产精品 亚洲精品 | 国产18精品乱码免费看 | 日韩黄色软件 | 久久久久国产一区二区三区 | 亚洲精品乱码久久久久久久久久 | 五月婷婷激情网 | www.狠狠| 日韩在线视频免费播放 | 成人中文字幕在线观看 | 久久这里只有精品视频99 | 美女视频一区二区 | 国产一级黄色av | av电影中文字幕在线观看 | 日韩欧美高清一区二区 | 91在线亚洲 | 日韩理论在线视频 | 九九综合在线 | 国产成人精品一二三区 | 成人av在线看 | 天天操天天射天天插 | 97综合网| 色激情在线 | 日韩av快播电影网 | 三日本三级少妇三级99 | 国产精品成人国产乱 | 久久成人高清视频 | 中文字幕 国产视频 | 久久草在线视频国产 | 黄色一级在线观看 | 欧美精品乱码久久久久久 | 欧美狠狠色 | 天天射夜夜爽 | 在线观看电影av | 久久免费在线观看视频 | 最新av在线免费观看 | 五月婷婷一级片 | 久久九九免费视频 | 成年人免费看的视频 | 九九热在线观看视频 | 久久久久精 | 成人av av在线 | 日韩欧美视频在线观看免费 | 亚洲激色 | 天天插天天狠天天透 | 久久久免费精品 | 日韩视频区| 久久一及片 | 国产精品入口66mio女同 | 开心激情久久 | 五月婷婷激情六月 | 久久草在线视频国产 | 欧美日韩国产网站 | 三上悠亚一区二区在线观看 | 国产亚洲综合性久久久影院 | 日日夜夜免费精品视频 | japanese黑人亚洲人4k | 国产精品6999成人免费视频 | 色在线免费观看 | 国产色拍拍拍拍在线精品 | 一区二区三区在线免费 | 国产美女主播精品一区二区三区 | 97色se | 国产麻豆精品传媒av国产下载 | 99久久一区| 欧美日韩国产精品久久 | 久久久久久久久久久免费视频 | 日韩在线观看第一页 | 国产午夜精品一区二区三区在线观看 | 狠狠狠综合 | 国产拍揄自揄精品视频麻豆 | 成人超碰在线 | 久久综合九色综合久久久精品综合 | 18女毛片| 精品久久久久久久久久久久 | 国产一级高清视频 | 婷婷色网 | 久草视频在线看 | 91大神免费视频 | 久久字幕精品一区 | 亚洲女同ⅹxx女同tv | 日韩一级理论片 | 欧美日韩中文国产 | 日韩免费观看一区二区三区 | 特黄一级毛片 | 亚洲 欧美 国产 va在线影院 | 免费视频区 | 日韩一区二区三区免费电影 | 成人免费一区二区三区在线观看 | 国产精品久久久久久高潮 | 久久国精品| 999在线视频 | 色婷婷骚婷婷 | 欧美国产一区在线 | 国产在线视频一区 | 999视频网 | 国产一区高清在线观看 | 国产一区不卡在线 | 黄色福利网站 | 五月婷婷综合激情 | 中文字幕人成一区 | 91在线播放综合 | 亚洲经典中文字幕 | 精品视频在线观看 | 特及黄色片 | 国产剧情一区二区在线观看 | 亚洲精品影院在线观看 | 久久在线精品 | 青青草国产精品视频 | 免费人做人爱www的视 | 麻豆视频免费播放 | 欧美十八 | mm1313亚洲精品国产 | 国产一区二区在线免费播放 | 亚洲成人精品在线观看 | 91视频91色 | 国产精品网站一区二区三区 | 九九热视频在线免费观看 | 国产糖心vlog在线观看 | 日韩av中文字幕在线 | 中文字幕av全部资源www中文字幕在线观看 | 日本爱爱免费 | 国产精品你懂的在线观看 | 西西4444www大胆视频 | 99精品视频免费观看 | 二区三区精品 | 少妇性aaaaaaaaa视频 | 在线日韩av| 亚洲欧美视频在线 | a在线一区 | 91黄视频在线| 亚洲精品在线免费 | 中文字幕亚洲欧美日韩2019 | 五月精品| 丁香婷婷色综合亚洲电影 | 色婷婷久久| 中文字幕成人av | 国产日韩精品在线观看 | 9i看片成人免费看片 | 亚洲国产经典视频 | 国产精品久久久久久久久久久久久 | 欧美一二三区在线观看 | 久久久91精品国产一区二区精品 | av丝袜美腿 | 色五婷婷| 亚洲国产精品va在线看 | 成人在线免费小视频 | 午夜久久网站 | 国产精品免费一区二区三区 | 国产精品久久久久久久久久久久午 | h视频日本| 久久理论视频 | 超碰在线最新网址 | 免费福利影院 | 亚洲精品国产精品乱码在线观看 | 日韩精品一区二区三区电影 | 久久草草热国产精品直播 | 国产精品久久久久影院日本 | 天天撸夜夜操 | 中文字幕亚洲字幕 | 新av在线 | 久久久久国产成人免费精品免费 | 婷婷视频在线 | 美女免费视频网站 | 欧美另类交在线观看 | 欧美日韩国产伦理 | 久久艹艹| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 久久免费播放视频 | 99r精品视频在线观看 | 麻豆视频成人 | 91干干干 | 久久久免费 | 激情婷婷在线观看 | 激情综合网五月婷婷 | 欧美一区在线看 | 精品久久久成人 | 久久久久久久看片 | 色网站免费在线看 | 午夜 在线 | 午夜国产福利在线观看 | 天天操天天拍 | 欧美一级淫片videoshd | 国产伦精品一区二区三区无广告 | 99色精品视频 | 91人人爽人人爽人人精88v | 人人插人人费 | www.色综合.com | 国产精品免费一区二区三区 | 国产在线久草 | 69国产精品视频免费观看 | 亚洲无吗av | 国产精品色视频 | 日韩av男人的天堂 | 日韩精品一区二区三区在线播放 | 中文字幕你懂的 | 91九色丨porny丨丰满6 | 国产日韩精品一区二区三区在线 | 久精品视频在线 | 欧美视频国产视频 | 中文字幕av专区 | 日韩高清免费观看 | 少妇精品久久久一区二区免费 | www.av在线播放 | 丝袜美腿亚洲综合 | 久久黄色影院 | 99久久久国产精品 | 福利一区视频 | 狠狠躁日日躁狂躁夜夜躁 | 成人教育av | 91干干干 | 99视频在线精品免费观看2 | 午夜精品一区二区三区在线观看 | japanesexxxhd奶水 91在线精品一区二区 | 91在线在线观看 | 日韩高清在线一区二区三区 | 欧美日韩国产二区 | 午夜在线免费观看视频 | 人人干网 | 五月天亚洲激情 | 久久久久久久久久亚洲精品 | 色综合激情网 | 国产视频久久久久 | 国产精品视频一二三 | 天堂av最新网址 | 美女视频网 | 视频在线观看入口黄最新永久免费国产 | 黄色免费网站 | 天天操天 | av天天在线观看 | 亚洲蜜桃av| 日本一区二区三区免费观看 | 成人午夜精品福利免费 | 91精品在线播放 | 麻豆视频免费在线播放 | 碰超在线 | 精品国产综合区久久久久久 | 97精品国产97久久久久久 | 久久99国产综合精品免费 | 国产中文字幕久久 | 久久一区二区三区超碰国产精品 | 97网| 91秒拍国产福利一区 | 97成人精品区在线播放 | 狠狠精品 | 欧美精品国产综合久久 | 99这里有精品| 欧美作爱视频 | 麻豆高清免费国产一区 | 日本高清xxxx| 日韩在线三级 | 五月婷婷中文字幕 | 黄av免费在线观看 | 国产午夜视频在线观看 | 国产亚洲无 | 黄色在线观看网站 | av不卡免费看 | 国语精品视频 | 97视频在线观看视频免费视频 | 国产精品美女久久久网av | 五月婷婷综 | 久久99国产精品久久99 | 91成人精品国产刺激国语对白 | 日日弄天天弄美女bbbb | 欧美九九九 | 一区二区三区高清在线 | 成人av电影免费 | 美女黄久久 | 青青河边草手机免费 | 色99导航| av 一区 二区 久久 | 久久精品一区二区三区视频 | 亚洲电影第一页av | 欧美精品久久久久性色 | 日韩av中文字幕在线免费观看 | 中文永久免费观看 | 黄色日本片| 日韩美在线观看 | 亚洲91中文字幕无线码三区 | 国产三级在线播放 | 91精品在线视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 懂色av一区二区三区蜜臀 | 天天操天天操天天 | 日本中文乱码卡一卡二新区 | 色吧av色av | 成人一级在线 | 国产精品18久久久久久久久 | 成人在线网站观看 | 超碰在线中文字幕 | 精品国产一区二区三区久久久蜜月 | 久久免费的视频 | 97超碰超碰久久福利超碰 | 国产精品网红福利 | 国产日产欧美在线观看 | 香蕉网在线 | 久久一区国产 | 最近中文字幕国语免费av | 能在线观看的日韩av | 日本少妇高清做爰视频 | 99精品国产一区二区三区麻豆 | 婷婷色站 | av免费在线观看网站 | 日韩精品免费在线视频 | 久久av影院 | 五月天狠狠操 | 99视频在线免费 | 免费成人在线观看 | 91精品国产99久久久久 | 免费久久99精品国产婷婷六月 | 亚洲精品在线免费看 | 成人免费在线电影 | 日韩肉感妇bbwbbwbbw | 国产资源网站 | 91污视频在线 | 综合久久久 | 99视频99 | 丁香资源影视免费观看 | 久久激情影院 | 国产裸体视频网站 | 亚洲精品国产高清 | 18+视频网站链接 | 日韩网站视频 | 亚洲视频精品 | 色诱亚洲精品久久久久久 | 色在线网 | 麻豆视传媒官网免费观看 | 国产成人精品亚洲a | 日韩综合第一页 | 91九色免费视频 | 麻豆视频在线观看 | 99热超碰在线 | 少妇精品久久久一区二区免费 | 日本婷婷色 | 日韩资源在线 | 91成人精品一区在线播放 | 中文字幕在线免费看 | 亚洲精品456在线播放乱码 | 超碰人人草| 国产成人av网站 | 国产麻豆电影在线观看 | 国产999精品视频 | 午夜免费在线观看 | 综合国产视频 | 亚洲男男gⅴgay双龙 | 日日射天天射 | 噜噜色官网 | 日韩免费福利 | 日韩成人xxxx | 91九色pron| 一区二区三区福利 | 国产一二区在线观看 | 国产资源中文字幕 | 激情五月综合网 | 婷婷精品国产一区二区三区日韩 | 91漂亮少妇露脸在线播放 | 精品国产伦一区二区三区观看说明 | 久操伊人 | 日韩欧美一区二区三区视频 | 精品美女国产在线 | 久久久久久久久毛片精品 | 久久久资源| 91视频免费网站 | 国产高清免费av | 97夜夜澡人人爽人人免费 | 在线观看黄色免费视频 | 久久免费视屏 | 国产五月婷 | 天天综合网天天综合色 | 国产黄色在线网站 | 青青河边草免费观看 | 国产天天综合 | 五月色综合 | 国产一区二区在线看 | 激情影院在线观看 | 国产精品久久久久久久av电影 | 久久免费中文视频 | 91在线视频免费播放 | 久久精品视频免费观看 | 久久久精品免费看 | 韩国精品在线 | 激情综合色图 | 国产精品久久久久国产精品日日 | 在线天堂v | 国产精品久久久久久久久久久久 | 国产资源免费在线观看 | 色五月色开心色婷婷色丁香 | av电影免费在线看 | 97热在线观看 | 免费久久99精品国产婷婷六月 | a视频在线观看 | 99热这里只有精品在线观看 | 最新国产视频 | 国产高清黄 | 最新免费av在线 | 在线观看黄网站 | 在线免费观看黄色大片 | 9999精品免费视频 | 免费在线播放av电影 | 福利在线看片 | 国产精品尤物视频 | 91视频久久久久久 | 亚洲免费av电影 | 日韩一区二区三区在线观看 | 视频在线一区 | 久久久久免费精品视频 | 欧美性生活免费看 | 免费观看一级成人毛片 | 国产精品高潮在线观看 | 美女福利视频一区二区 | 成人在线观看免费视频 | 国产伦精品一区二区三区无广告 | 成人av资源在线 | 99在线免费视频观看 | 亚洲免费av在线播放 | 91丨九色丨蝌蚪丨对白 | 91精品国产自产老师啪 | 国产精品99蜜臀久久不卡二区 | 久久国产免| 日本精品久久久久影院 | 99久久99热这里只有精品 | 91精品国自产在线观看 | 97看片| 五月丁婷婷 | 天天综合网 天天 | 天天干天天射天天爽 | 97精产国品一二三产区在线 | av亚洲产国偷v产偷v自拍小说 | 蜜臀av一区二区 | 在线日韩av| 久久精品国产美女 | 欧美韩日精品 | 爱av在线网 | 99视频+国产日韩欧美 | 国产精品第10页 | 国产美女精彩久久 | 免费一级片在线观看 | 中文字幕亚洲欧美日韩 | 中文字幕中文字幕在线一区 | av免费在线网站 | 国产精品久久久久久久久久99 | 高清有码中文字幕 | 丁香在线观看完整电影视频 | www色综合 | 欧美精品久久久久久久久老牛影院 | 黄色小说免费观看 | 五月婷婷六月丁香 | 伊人亚洲综合 | 伊人狠狠干 | 国产在线成人 | 手机看片午夜 | www.色国产 | 天天操综合网 | 九九热精品视频在线观看 | 亚洲激情一区二区三区 | 91自拍91 | 国产又粗又猛又爽又黄的视频先 | 国产精品毛片久久久久久久久久99999999 | 国产福利91精品 | 91一区一区三区 | 国产精品一区久久久久 | 麻豆免费视频网站 | 亚洲激情综合 | 久久精品久久久精品美女 |