Spring原理讲解

8 篇文章 1 订阅
订阅专栏

Spring原理讲解

1、什么是Spring框架,Spring框架主要包含哪些模块

​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的full-stack(一站式) 轻量级开源框架。

主要包含的模块:

在这里插入图片描述

2、Spring框架的优势

​ 1、Spring通过DI、AOP和消除样板式代码来简化企业级Java开发

​ 2、Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL

​ 3、低侵入式设计,代码的污染极低

​ 4、独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺

​ 5、Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦

​ 6、Spring的AOP允许将一些通用任务如安全、事务、日志等进行集中式处理,从而提供了更好的复用

​ 7、Spring的ORM和DAO提供了与第三方持久层框架的的良好整合,并简化了底层的数据库访问

​ 8、Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

3、IOC和DI是什么?

​ 控制反转是就是应用本身不负责依赖对象的创建和维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就有应用转移到了外部容器,控制权的转移就是控制反转。

​ 依赖注入是指:在程序运行期间,由外部容器动态地将依赖对象注入到组件中如:一般,通过构造函数注入或者setter注入。

4、描述下Spring IOC容器的初始化过程

​ Spring IOC容器的初始化简单的可以分为三个过程:

​ 第一个过程是Resource资源定位。这个Resouce指的是BeanDefinition的资源定位。这个过程就是容器找数据的过程,就像水桶装水需要先找到水一样。

​ 第二个过程是BeanDefinition的载入过程。这个载入过程是把用户定义好的Bean表示成Ioc容器内部的数据结构,而这个容器内部的数据结构就是BeanDefition。

​ 第三个过程是向IOC容器注册这些BeanDefinition的过程,这个过程就是将前面的BeanDefition保存到HashMap中的过程。

5、BeanFactory 和 FactoryBean的区别?

  • BeanFactory是个Factory,也就是IOC容器或对象工厂,在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的,提供了实例化对象和拿对象的功能。

    使用场景:

    • 从Ioc容器中获取Bean(byName or byType)
    • 检索Ioc容器中是否包含指定的Bean
    • 判断Bean是否为单例
  • FactoryBean是个Bean,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。

    使用场景

    • ProxyFactoryBean

6、BeanFactory和ApplicationContext的异同

在这里插入图片描述

相同:

  • Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContext继承于BeanFactory(ApplicationContext继承ListableBeanFactory。
  • 它们都可以用来配置XML属性,也支持属性的自动注入。
  • 而ListableBeanFactory继承BeanFactory),BeanFactory 和 ApplicationContext 都提供了一种方式,使用getBean(“bean name”)获取bean。

不同:

  • 当你调用getBean()方法时,BeanFactory仅实例化bean,而ApplicationContext 在启动容器的时候实例化单例bean,不会等待调用getBean()方法时再实例化。
  • BeanFactory不支持国际化,即i18n,但ApplicationContext提供了对它的支持。
  • BeanFactory与ApplicationContext之间的另一个区别是能够将事件发布到注册为监听器的bean。
  • BeanFactory 的一个核心实现是XMLBeanFactory 而ApplicationContext 的一个核心实现是ClassPathXmlApplicationContext,Web容器的环境我们使用WebApplicationContext并且增加了getServletContext 方法。
  • 如果使用自动注入并使用BeanFactory,则需要使用API注册AutoWiredBeanPostProcessor,如果使用ApplicationContext,则可以使用XML进行配置。
  • 简而言之,BeanFactory提供基本的IOC和DI功能,而ApplicationContext提供高级功能,BeanFactory可用于测试和非生产使用,但ApplicationContext是功能更丰富的容器实现,应该优于BeanFactory

7、Spring Bean 的生命周期?

在这里插入图片描述

总结:

(1)实例化Bean:

对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化。对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有的bean。

(2)设置对象属性(依赖注入):

实例化后的对象被封装在BeanWrapper对象中,紧接着,Spring根据BeanDefinition中的信息 以及 通过BeanWrapper提供的设置属性的接口完成依赖注入。

(3)处理Aware接口:

接着,Spring会检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给Bean:

①如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的就是Spring配置文件中Bean的id值;

②如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory()方法,传递的是Spring工厂自身。

③如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文;

(4)BeanPostProcessor:

如果想对Bean进行一些自定义的处理,那么可以让Bean实现了BeanPostProcessor接口,那将会调用postProcessBeforeInitialization(Object obj, String s)方法。

(5)InitializingBean 与 init-method:

如果Bean在Spring配置文件中配置了 init-method 属性,则会自动调用其配置的初始化方法。

(6)如果这个Bean实现了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法;由于这个方法是在Bean初始化结束时调用的,所以可以被应用于内存或缓存技术;

以上几个步骤完成后,Bean就已经被正确创建了,之后就可以使用这个Bean了。

(7)DisposableBean:

当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法;

(8)destroy-method:

最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

8、Spring AOP的实现原理?

​ Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。

​ Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类。

​ 如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。

9、Spring 是如何管理事务的?

​ Spring事务管理主要包括3个接口,Spring的事务主要是由它们(PlatformTransactionManager,TransactionDefinition,TransactionStatus)三个共同完成的。

1. PlatformTransactionManager:事务管理器–主要用于平台相关事务的管理

主要有三个方法:

  • commit 事务提交;
  • rollback 事务回滚;
  • getTransaction 获取事务状态。

2. TransactionDefinition:事务定义信息–用来定义事务相关的属性,给事务管理器PlatformTransactionManager使用

这个接口有下面四个主要方法:

  • getIsolationLevel:获取隔离级别;
  • getPropagationBehavior:获取传播行为;
  • getTimeout:获取超时时间;
  • isReadOnly:是否只读(保存、更新、删除时属性变为false–可读写,查询时为true–只读)

事务管理器能够根据这个返回值进行优化,这些事务的配置信息,都可以通过配置文件进行配置。

3. TransactionStatus:事务具体运行状态–事务管理过程中,每个时间点事务的状态信息。

例如它的几个方法:

  • hasSavepoint():返回这个事务内部是否包含一个保存点,
  • isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚
  • isNewTransaction():判断当前事务是否是一个新事务

声明式事务的优缺点

  • 优点:不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。
  • 缺点:声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。

10、Spring 的不同事务传播行为有哪些,干什么用的?

在这里插入图片描述

11、Spring 中用到了那些设计模式?

  • 代理模式—在AOP中被用的比较多。
  • 单例模式—在spring配置文件中定义的bean默认为单例模式。
  • 模板方法—用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
  • 工厂模式—BeanFactory用来创建对象的实例。
  • 适配器–spring aop
  • 装饰器–spring data hashmapper
  • 观察者-- spring 事件驱动模型
  • 回调–Spring Aware回调接口

12、Spring如何解决循环依赖?

https://blog.csdn.net/qq_36381855/article/details/79752689

13、bean的作用域

(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。

(2)prototype:为每一个bean请求提供一个实例。

(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。

(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。

14、Spring框架中有哪些不同类型的事件

(1)上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。

(2)上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。

(3)上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。

(4)上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。

(5)请求处理事件(RequestHandledEvent):在Web应用中,当一个http请求(request)结束触发该事件。

15、Spring通知有哪些类型

(1)前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)。

(2)返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。

(3)抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。

(4)后通知(After (finally) advice):当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

(5)环绕通知(Around Advice):包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它们自己的返回值或抛出异常来结束执行。 环绕通知是最常用的一种通知类型。

16、Spring的自动装配

在spring中,对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象,使用autowire来配置自动装载模式。

在Spring框架xml配置中共有5种自动装配:

(1)no:默认的方式是不进行自动装配的,通过手工设置ref属性来进行装配bean。

(2)byName:通过bean的名称进行自动装配,如果一个bean的 property 与另一bean 的name 相同,就进行自动装配。

(3)byType:通过参数的数据类型进行自动装配。

(4)constructor:利用构造函数进行装配,并且构造函数的参数通过byType进行装配。

(5)autodetect:自动探测,如果有构造方法,通过 construct的方式自动装配,否则使用 byType的方式自动装配。

基于注解的方式:

使用@Autowired注解来自动装配指定的bean。在使用@Autowired注解之前需要在Spring配置文件进行配置,<context:annotation-config />。在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性。在使用@Autowired时,首先在容器中查询对应类型的bean:

如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据;

如果查询的结果不止一个,那么@Autowired会根据名称来查找;

如果上述查找的结果为空,那么会抛出异常。解决方法时,使用required=false。

@Autowired可用于:构造函数、成员变量、Setter方法

注:@Autowired和@Resource之间的区别

(1) @Autowired默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为false)。

(2) @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。

序号8、Spring原理讲解
Alan先生的代码屋
02-04 534
Spring原理讲解 1、什么是Spring框架,Spring框架主要包含哪些模块 ​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。 框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从
Spring AOP回顾
Alen
09-18 388
基本概念 “横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块, 并将其命名为"Aspect”,即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共 同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未 来的可操作性和可维护性。 使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流...
Spring原理
weixin_44446626的博客
08-23 1085
Spring原理性知识
什么是Spring?它能干什么!
最新发布
L1216347491的博客
08-26 1642
降低耦合,简化开发 Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理。AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无需手动编程。方便程序的测试 Spring对Junit4支持,可以通过注解方便的测试Spring程序。
Spring 原理
qq_40896594的博客
09-15 3614
1、Spring 特点 1.1、轻量级 从大小和开销两方面而言 Spring 都是清轻量的。完整的 Spring 框架可以在一个大小只有 1M 多的 Jar 文件里发布,并且 Spring 所需的处理开销也是微不足道的。 此外,Spring 是非侵入式的:典型的 Spring 应用中的对象不依赖与 Spring 的特定的类。 1.2、控制反转 Spring 通过控制反转(IOC)技术促进了低耦合。 当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖。
详解Spring工作原理
weixin_51495453的博客
11-14 1万+
1、spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。 Spring目的:
【总结】Spring原理剖析
iteye_2022的博客
01-14 477
Spring模块 Core(核心容器) 说明 核心容器提供 Spring 框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现 BeanFactory使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开 IOC(控制反转模式 ) 不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置...
Spring原理篇.xmind
06-09
该思维导图是对Spring框架原理的一个知识讲解,很详细,源码都扣出来了,该文件也挺大的,每个知识点都一步一步截图了。 包括内容:Spring体系结构、Spring重要接口讲解(BeanFactory继承体系、BeanDefinition继承...
SpringCloud底层原理
01-27
一、业务场景介绍二、SpringCloud核心组件:Eureka三、SpringCloud核心组件:Feign四、SpringCloud核心组件:Ribbon五、SpringCloud核心组件:Hystrix六、SpringCloud...因此本文将通过大量的手绘图,给大家谈谈Spring
全面深度讲解spring5底层原理-视频教程网盘链接提取码下载 .txt
03-27
本课程以讲解 Spring 原理知识为主。但又不同于一般的原理课,基本不翻源码,而是通过各种单元测试和模拟实现,带领学员更为感性地认识 Spring 底层。学完本课程能够收获:培养正确的学习源码方法;睥睨其它程序员的...
Spring原理解析
weixin_37924741的博客
02-20 147
Spring 1.加载bean原理 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); //扫描applicationContext.xml,将其中的bean配置读入,并且用工厂生成对应的bean实例(最早期) //现在更流行用注解,一个@Bean就搞定了 @Configu...
Spring原理
对雪书空武
04-14 296
&#13; Tomcat与多线程, servlet是多线程执行的,多线程是容器提供的能力。 servlet为了能并发执行, 是因为servlet被这些thread使用,tomcat里创建响应的socketServer线程类接收请求连接,然后在再创建或引用对应的servlet实例来处理请求连接。servlet是单例的,只创建一次。所以最好不要使用serlvet中的实例字段。  ...
Spring原理概述
热门推荐
文武天下
03-08 2万+
本文为转过来,对Spring进行了总体上的说明,有益于建立对Spring的总体把握和认识。1、spring原理spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。它的原理是在applicatio
spring核心原理解析
未知的希望,是我不灭的信仰
09-04 519
spring全家桶包括很多内容,spring framework,springboot,springcloud,springdata等 讲的主要是spring framework,springboot是基于spring framework做的 spring通过无参构造方法创建一个对象,然后进行依赖注入,给这个对象里面加了@Autowired注解的属性赋值,然后生成Bean 依赖注入的原理,伪代码: 假设注入一个bean,要给这个bean赋指定值,可以在初始化前进行赋值 Bean的创建的..
Spring 原理详解
2303_78892316的博客
05-27 1448
Bean在Spring中表示的是Spring管理的对象,Bean的作用域是只Bean在Spring框架中的某种行为模式。后面4种在Spring MVC环境种才生效。
spring基本原理讲解
红豆和绿豆的博客
08-07 183
(一)spring的ioc的原理 (1)首先收集一些bean componentScan (2)从收集的这边bean中 抽象出BeanDefinnation 也就创建对象实例的元数据 (3)基于BeanDefinnation创建对象 可以使用反射,cglib等字节码技术进行创建 spring基于这三个步骤,进行容器的初始化以及对象的实例化,同时进行大量的扩展 (二)怎么才能扩展呢,那么就必须了解spring 的生命周期的方法 针对spring容器,针对bean的 生命周期扩展方法 BeanF.
Spring工作原理详解
Personal_Summary的博客
03-15 188
本文纯属个人学习需要,特意写一下连接,如果此文博主,不满意我立马删除 Spring工作原理详解
写文章

热门文章

  • JAVA实现MQTT客户端订阅消息并消费 6425
  • PMP备考图表汇总详解 6296
  • mybatis查询返回List泛型问题 3060
  • 索引的优缺点,何时用或不用索引 1830
  • Spring原理讲解 1733

分类专栏

  • 物联网 1篇
  • MyBatis 6篇
  • Netty 5篇
  • juc多线程 7篇
  • MySQL 13篇
  • NoSQL 2篇
  • JAVA 8篇
  • SpringMVC 6篇
  • 中间件 6篇
  • SpringCloud 6篇
  • JAVA面试题 4篇
  • MySQL面试题 2篇
  • 项目管理 2篇
  • 开发工具 1篇
  • 大数据 2篇
  • Spring 8篇
  • SQL 3篇

最新评论

  • JAVA实现MQTT客户端订阅消息并消费

    RobotZero: 去我资源里面下载

  • JAVA实现MQTT客户端订阅消息并消费

    渔舟唱晚QvQ: 请问可以分享一下源代码吗?

  • SpringCloud微服务架构06-Feign声明式REST调用

    阿狸猿: 好文章,已经收藏到我的站点https://aznfz.com,感谢作者!

  • JAVA实现MQTT客户端订阅消息并消费

    RobotZero: 私聊给我邮箱

  • JAVA实现MQTT客户端订阅消息并消费

    姜大大的博客: 请问可以分享一下源代码吗?

大家在看

  • 论文 Python 实现WOA-CNN-BiGRU-Attention数据分类预测 64
  • 手环押金原路退回系统——足浴店——东方仙盟

最新文章

  • 智能家居配网
  • 一条SQL在MySQL中是如何执行的
  • Mysql优化之Explain工具介绍与索引最佳实践
2023年1篇
2022年3篇
2021年61篇
2020年14篇
2019年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家漯河玻璃钢雕塑制作厂家上海广场玻璃钢花盆led发光玻璃钢雕塑摆件室内商场美陈市场公仔玻璃钢人物雕塑参考价许昌肖像玻璃钢雕塑报价石排玻璃钢雕塑厂漳平玻璃钢花盆花器个性化玻璃钢雕塑设计玻璃钢雕塑家什么滑石粉好海南水果蔬菜玻璃钢雕塑襄阳玻璃钢造型雕塑垦利玻璃钢人物雕塑组合式玻璃钢花盆厂家直销湛江玻璃钢人物雕塑规格抽象玻璃钢骆驼雕塑室外玻璃钢雕塑怎么防寒商场美陈巡场制度迪庆玻璃钢烤漆雕塑加工秦皇岛公园玻璃钢雕塑价格德州水景玻璃钢仿铜雕塑北京大型主题商场美陈怎么样台湾现代人物玻璃钢雕塑景观卡通雕塑玻璃钢批发校园玻璃钢雕塑费用是多少玻璃钢雕塑历史名人黄山商场美陈道具光明玻璃钢卡通雕塑安庆商场节庆美陈商洛玻璃钢游乐场门头雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化