专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Java必学的Spring5学习大总结

  一、了解Spring基本介绍、主要思想IoCDI1、了解Spring基本介绍(1)Spring是什么?
  Spring是一个轻量级的DIIoC和AOP容器的开源框架,致力于构建致力于构建轻量级的JavaEE应用,简化应用开发,本身涵盖了传统应用开发,还拓展到移动端,大数据等领域。(2)Spring有什么优点?与作用?
  Spring能帮我们低侵入低耦合地根据配置文件创建及组装对象之间的依赖关系。
  Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制等。
  Spring能非常简单的且强大的声明式事务管理(通过配置完成事务,不用修改代码)。
  Spring提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,且自己也提供了一套JDBC模板来方便数据库访问。
  Spring提供与第三方Web(如Struts12、JSF)框架无缝集成,且自己也提供了一套SpringMVC框架,来方便Web层搭建。
  Spring能方便的与如JavaMail、任务调度、缓存框架等技术整合,降低开发难度。2、主要思想IoCDI
  Spring是一个DI容器或IoC容器(DI和IoC思想差不多)。掌握着创建对象和构建对象之间的依赖的控制权。IoC:InversionofControl(控制反转):
  一种设计思想。其本意是是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。DI:DependencyInjection(依赖注入):
  一种设计思想。具体是指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过配置设值给该对象。二、掌握Spring基本使用、Spring获取bean对象的方式、Spring标签import的引入配置1、掌握Spring基本使用(1)依赖jar包:springbeans。jarspringcore。jarcommonslogging。jar(2)配置:创建applicationContext。xml配置文件:配置的约束内容:lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttps:www。springframework。orgschemabeansspringbeans。xsdbeanidhelloclasscom。shan。hello。Hellopropertynamepasswordvalue123propertynameusernamevalueshanspanbeanspanbeansliul(3)使用:TestvoidtestIoC()throwsException{Hellohellonull;1、加载配置文件:从classpath路径去寻找配置文件,创建资源对象ResourceresourcenewClassPathResource(applicationContext。xml);2、创建IoC容器:创建spring的工厂对象(IoC容器对象)BeanFactoryfactorynewXmlBeanFactory(resource);3、从Ioc容器获取对象:从springIoC容器(就是factory工厂对象)中获取指定名称的对象hello(Hello)factory。getBean(hello);hello。printUser();}从例子,可以看出,spring不仅帮我们创建对象,还帮我们把对象需要的数据给设置进来(对象的属性依赖)2、Spring获取bean对象的方式推荐使用:bean的名称类型:TgetBean(Stringname,ClassrequiredType)根据bean对象在容器中的名称类型来获取TestvoidtestIoC()throwsException{Hellohellonull;1、加载配置文件:从classpath路径去寻找配置文件,创建资源对象ResourceresourcenewClassPathResource(applicationContext。xml);2、创建IoC容器:创建spring的工厂对象(IoC容器对象)BeanFactoryfactorynewXmlBeanFactory(resource);3、从Ioc容器获取对象:从springIoC容器(就是factory工厂对象)中获取指定名称的对象方式(推荐):TgetBean(Stringname,ClassrequiredType)根据bean对象在容器中的名称类型来获取hellofactory。getBean(hello,Hello。class);hello。printUser();}3、Spring标签import的引入配置前缀classpathclasspath三、Spring核心对象BeanFactory和Bean、Spring的配置方式、了解Spring管理bean的原理1、Spring核心对象BeanFactory和BeanBeanFactory:是Spring的IoC容器(容器管理对象的生命周期),生产bean对象的工厂,负责配置,创建和管理bean。bean:被SpringIoC容器管理的对象称之为bean。2、Spring的配置方式元数据的配置有三种方式:
  XMLbasedconfiguration(xml配置文件)
  Annotationbasedconfiguration(注解)
  Javabasedconfiguration(基于javaconfig)3、了解Spring管理bean的原理底层是:反射(获取构造器实例对象)内省机制(设置属性值)通过Resource对象加载配置文件解析配置文件,得到指定名称的bean解析bean元素,id作为bean的名字,class用于反射得到bean的实例注意:此时,bean类必须存在一个无参数构造器(且该无参构造器和访问权限无关);调用getBean方法的时候,从容器中返回对象实例;结论:就是把代码从JAVA文件中转移到了XML中。四、使用Spring的测试框架相对于传统测试方式,spring测试框架会帮我们关闭对象资源,而使用传统方式,不会正常关闭spring容器。1、依赖jar包:springtest。jarspringcontext。jarspringaop。jarspringexpression。jar2、配置文件:
  SpringTestTest5context。xml文件(文件名必须是测试类context,因为需要跟测试类名对应上):lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttps:www。springframework。orgschemabeansspringbeans。xsd!配置bean对象beanidsomeBeanclasscom。shan。springtest。SomeBeanbeans3、测试类:
  SpringTestTest5类:SpringTest案例测试运行SpringJUnit5SpringJUnitConfigpublicclassSpringTestTest5{表示自动按照类型Spring容器中去找到bean对象,并设置给该字段AutowiredprivateSomeBeanbean;TestvoidtestIoC()throwsException{bean。doWork();}}五、Spring的核心IoC(基于xml)1、ApplicationContext和BeanFactory创建对象的区别BeanFactory在创建Spring容器的时候,并不会立马创建容器中管理的Bean对象,需要等到获取某一个bean的时候才会创建该bean延迟初始化。(懒加载)ApplicationContext在启动Spring容器的时候就会创建所有的bean(在Web应用使用Application)2、常用实例化bean的方式和实现FactoryBean接口实例化的方式(1)实例化bean的方式:构造器实例化(bean中有无参数构造器),标准、常用。beanidsomeBeanclasscom。shan。springtest。SomeBean(2)实现FactoryBean接口实例化的方式:类要实现接口FactoryBean:publicclassDogFactoryimplementsFactoryBeanDog{OverridepublicDoggetObject()throwsException{DogdognewDog();returndog;}OverridepublicClasslt;?getObjectType(){returnDog。class;}}beaniddogclasscom。shan。04factorybean。DogFactory3、bean作用域scope、初始化initmethod和销毁destroymethod(1)bean作用域scope缺省和常用的情况是单例singletonbeanidclassscope作用域单例和多例:singleton:单例(默认的作用域)prototype:多例在web应用中(request、session、application)globalSession:一般用于Porlet应用环境,分布式系统存在全局session概念(单点登录)websocket:将一个bean定义定义到WebSocket的生命周期(2)bean初始化和销毁:属性initmethod该类中初始化方法名和属性destroymethod该类中销毁方法名没有使用spring的测试框架的话,就不能正常关闭IoC容器,即销毁bean对象了(可以手动关闭)beanidcatclasscom。shan。lifecycle。Catinitmethodinitdestroymethodclose六、Spring的核心DI(基于xml):
  ({color{Violet}{DI跟IoC差不多啦,细节就是DI还负责管理bean对象的属性}})1、xml配置注入属性值:
  配置与注入:常量类型配置value注入setter方法对象类型配置ref注入setter方法集合类型配置各自集合对应的元素。。。注入setter方法1、通过XML配置装配(1)XML自动装配(不推荐)通过bean元素的属性autowire自动装配(2)setter注入〔属性注入(根据类型区分)〕(常用)注入常量valuebeanidpersonclasscom。shan。disetter。Personpropertynamenamevalueshanpropertynameagevalue22propertynamesalaryvalue10000spanbean(常用)注入对象refbeanidcatclasscom。shan。disetter2。Catpropertynamenamevaluekityspanbeanbeanidpersonclasscom。shan。disetter2。Personpropertynamenamevalueshanpropertynameagevalue22propertynamecatrefcatspanbeanli注入集合、、、、personclasscom。shan。disetter3。Personpropertynamesetsetvalueset1spanvaluevalueset2spanvaluespansetspanpropertypropertynamelistlistvaluelist1spanvaluespanlistspanpropertypropertynamearrayarrayvaluearray1spanvaluespanarrayspanpropertypropertynamemapmapentrykeykey1valuevalue1spanmapspanpropertypropertynamepropvaluep1v1p2v2spanvaluespanpropertyspanbeanliul2、bean元素继承(本质是xml配置内容的拷贝)通过abstract属性进行抽取通过parent属性进行引入
  3、属性注入应用配置数据库连接池动态加载配置文件(db。properties数据库连接的配置信息)使用{}动态引入属性值(1)配置数据库连接池!配置数据库连接池beaniddataSourceclasscom。alibaba。druid。pool。DruidDataSourceinitmethodinitdestroymethodclosepropertynamedriverClassNamevaluecom。mysql。jdbc。Driverpropertynameurlvaluejdbc:mysql:localhost:3306springdemo?useSSLfalsepropertynameusernamevaluerootpropertynamepasswordvalueadminpropertynameinitialSizevalue2bean(2)db。properties数据库连接的配置信息(3)propertyplaceholder要是使用标签Context,需要先引入Context的约束(在beans的基础进行修改即可):
  context:propertyplaceholder属性占位符!从classpath的根路径加载db。propertiescontext:propertyplaceholderlocationclasspath:db。properties使用{}动态引入属性值!配置数据库连接池beaniddataSourceclasscom。alibaba。druid。pool。DruidDataSourceinitmethodinitdestroymethodclosepropertynamedriverClassNamevalue{jdbc。driverClassName}propertynameurlvalue{jdbc。url}propertynameusernamevalue{jdbc。username}propertynamepasswordvalue{jdbc。password}propertynameinitialSizevalue{jdbc。initialSize}bean七、Spring使用注解配置1、注解三要素:注解本身、被贴、第三方程序(赋予注解的特殊功能)
  对于IoC注解、DI注解:他们的第三方程序是他们对应的解析器。IoC注解:组件扫描器DI注解:注解配置2、DI注解:Autowired、Resource、Valuevalue注解的威力:结合动态properties配置文件引入值变量例如:Value({service。port})(1)通过注解注入属性值配置与注入:常量类型配置value注入Value对象类型配置ref注入AutowiredResource(2)IoC注解:Component、Scope、PostConstruct、PreDestroy使用注解Component(配置Bean)相当于beaniddataSourceclasscom。shan。ioc。MyDataSourceComponent(dataSource)publicclassMyDataSource{}bean组件版型:Component泛指组件Repository持久层Service业务层Controller控制层作用域注解、初始化和销毁注解:Scope、PostConstruct、PreDestroy
  ({color{Violet}{其中初始化和销毁注解〔依赖:javax。annotationapi。jar〕}})八、SpringAOP1、了解AOP思想〔面向切面编程的思想〕、AOP思想的原理(1)面向切面编程的思想:
  利用一种称为横切的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为Aspect,即切面。切面:把一个个的横切关注点放到某个模块中去,称之为切面。那么每一个的切面都能影响业务的某一种功能,切面的目的就是功能增强,如日志切面就是一个横切关注点,应用中许多方法需要做日志记录的只需要插入日志的切面即可。
  (2)AOP思想的原理:动态代理2、Pointcot语法找到具体的某个方法哪个包。哪个类。哪个方法execution(修饰符?返回类型声明类型?方法名(参数)异常)切入点表达式中的通配符(看具体的方法,先从方法名位置开始看)::匹配任何部分,但是只能表示一个单词。。。:可用于全限定名中和方法参数中,分别表示子包和0到N个参数。3、AOP开发:(1)依赖jar包:springaop。jarcom。springsource。org。aopalliance。jar〔spring5的springaop。jar已经包含〕com。springsource。org。aspectj。weaver。jar(2)配置:引入AOP的约束:
  AOP的3Wwhat、where、when!AOP配置:在什么地点、什么时机、做什么!1、what:做什么增强beanidtransactionManagerclasscom。shan。tx。TransactionManager!属性proxytargetclass配置是否使用真实对象!配置AOP切面!关联what!2、where:在哪些包中的哪些类中的哪些方法上做增强!3、when:在方法执行的什么时机做增强!关联whereaop:aspectaop:config4、AOP增强的分类根据被增强的方法的执行时机分为:前置增强、后置增强、异常增强、最终增强、环绕增强前置增强:权限控制、日志记录等〔被增强的方法执行之前〕后置增强:提交事务、统计分析数据结果等〔被增强的方法正常执行之后(中途没有异常)〕最终增强:回滚事务、记录日志异常信息等〔被增强的方法出现异常〕最终增强:释放资源等〔finally最后操作〕环绕增强:缓存、性能日志、权限、事务管理等〔可以自定义在被增强方法的什么时机执行(返回一个Object,参数processdingJoinpoint)〕5、获取被增强方法的信息,并且可以传递给增强方法【参数Joinpoint类】Joinpoint类连接点,访问被增强方法的真实对象,代理对象,方法参数等可以作为前置、后置、异常、最终增强方法的参数,第一个参数可以作为前置、后置、异常、最终增强方法的参数,第一个参数publicvoidopen(JoinPointjp){System。out。println(开启事务);System。out。println(代理对象:jp。getThis()。getClass());System。out。println(目标对象:jp。getTarget()。getClass());System。out。println(被增强方法的参数:Arrays。toString(jp。getArgs()));System。out。println(连接点方法的签名:jp。getSignature());System。out。println(当前连接点的类型:jp。getKind());}52、环绕增强方法调用真实对象的方法【参数processdingJoinpoint】参数processdingJoinpoint:是JointPoin的子类,只能用于环绕增强,作为第一个参数还可以调用真实对象中被增强的方法。调用真实对象的方法retpjp。proceed();publicObjectaroundMethod(ProceedingJoinPointpjp){Objectretnull;System。out。println(开启事务);try{retpjp。proceed();调用真实对象的方法System。out。println(调用真实对象的方法。。。);System。out。println(提交事务);}catch(Throwablee){System。out。println(回滚事务,错误信息:e。getMessage());}finally{System。out。println(关闭资源);}returnret;}6、使用注解配置AOP(1)AOP注解的解析器【第三方程序,赋予注解的特殊功能】:使用cglib注解:配置属性proxytargetclasstrue!whatbeanidtxManagerclassorg。springframework。jdbc。datasource。DataSourceTransactionManagerpropertynamedataSourcerefdataSourcepropertybean!AOP注解的解析器(2)使用注解Aspect(配置一个AOP切面)配置where配置whenComponentAspect配置一个AOP切面publicclassTransactionManager{wherexml:Pointcut(execution(com。shan。service。。Service。(。。)))publicvoidtxPoint(){}Before(txPoint())publicvoidopen(JoinPointjp){System。out。println(开启事务);}AfterReturning(txPoint())publicvoidcommit(){System。out。println(提交事务);}AfterThrowing(valuetxPoint(),throwingex)publicvoidrollback(Throwableex){System。out。println(回滚事务,异常信息:ex。getMessage());}After(txPoint())publicvoidclose(){System。out。println(关闭资源);}Around(txPoint())publicObjectaroundMethod(ProceedingJoinPointpjp){Objectretnull;System。out。println(开启事务);try{retpjp。proceed();调用真实对象的方法System。out。println(调用真实对象的方法。。。);System。out。println(提交事务);}catch(Throwablee){System。out。println(回滚事务,错误信息:e。getMessage());}finally{System。out。println(关闭资源);}returnret;}}九、SpringDAO1、模板类和基类:
  2、pringJDBC【JDBCTemplate模板类】(1)依赖jar包:mysqlconnectorjava。jar【还可以使用德鲁伊连接池:druid。jar】springjdbc。jarspringtx。jar(2)总结JdbcTemplate模板类处理CRUD操作DML操作:publicupdate(Stringsql,Object。。。args)参数:sql?占位符对应的参数返回:受影响的行数DQL操作:publicTListTquery(Stringsql,Object。。。args,RowMapperTrowMapper)参数:sql?占位符对应的参数结果集处理器返回:多行结果集封装的list3、模板类JdbcTemplate的问题与解决NameParameterJdbcTemplate(1)问题:在模板类JdbcTemplate中使用的占位符?【顺序占位符】,需要数第几个,然后写对应的参数,参数多了麻烦面对集合查询in查询时(不确定参数个数),selectfromemployeewhereidin。。。。。in后边不知道该怎么写,是应该写一个?还是(多少个?,都是不确定的)(2)解决:使用NameParameterJdbcTemplate命名的参数JdbcTemplate模板,其实就是在JdbcTemplate外面套一层。允许使用xx来给占位参数起名称,我们需要给名称xx的位置设置参数。
  举例:publicintcountOfActorsByFirstName(StringfirstName){Stringsqlselectcount()fromTACTORwherefirstname:firstname;MapString,StringnamedParametersCollections。singletonMap(firstname,firstName);returnthis。namedParameterJdbcTemplate。queryForObject(sql,namedParameters,Integer。class);}十、SpringORM集成mybatis框架十一、Springtx1、Spring的事务管理主要包括3个api:PlatformTransactionManager:根据TransactionDefinition提供的事务属性配置信息,创建事务。TransactionDefinition:封装事务的隔离级别和超时时间,是否为只读事务和事务的隔离级别和传播规则等事务属性。TransactionStatus:封装了事务的具体运行状态。如是否是新开启事务,是否已经提交事务,设置当前事务为rollbackonly。记:常用的事务管理器:JDBCMyBatis:DataSourceTransactionManagerHibernate:HibernateTransactionManager2、事务传播规则TransactionDefinition和常用的情况(1)事务传播规则:
  在一个事务方法中,调用了其他事务的方法,此时事务该如何传递,按照什么规则传播。(2)常用的情况:情况一:需要尊重遵从当前事务REQUIRED:(常用)必须存在一个事务,如果当前存在一个事务,则加入到该事务中,否则,新建一个事务。情况二:不遵从当前事务的REQUIRESNEW:(常用)不管当前是否存在事务,都会新开启一个事务。必须是一个新的事务。情况三:寄生事务(外部事务内部事务嵌套事务)NESTED:寄生事务,如果当前存在事务,则在内部事务内执行。如果当前不存在事务,则创建一个新的事务。3、事务配置(基于xml和注解)(1)基于xml:事务增强本质就是AOP增强what、when、where!好比是AOP,事务增强!1、what:配置jdbc事务管理器beanidtxManagerclassorg。springframework。jdbc。datasource。DataSourceTransactionManagerpropertynamedataSourcerefdataSourcebean!2:when:配置事务管理器增强(环绕增强)!关联whattx:adviceidtxAdvicetransactionmanagertxManagertx:attributestx:methodnametranstx:attributestx:advice!3、where:配置切面!关联whenaop:config(2)使用注解配置jdbc事务:tx注解解析器、Transactional注解:Transactional注解属性:name、propagation、isolation、timeout、readonly、rollbackfor、norollbackfor注解第三方解析:beanidtxManagerclassorg。springframework。jdbc。datasource。DataSourceTransactionManagerpropertynamedataSourcerefdataSourcespanpropertyspanbeantx:annotationdriventransactionmanagertxManagerli注解Transactional使用:ServiceTransactionalpublicclassAccountServiceImplimplementsIAccountService{AutowiredprivateIAccountDAOdao;Overridepublicvoidtrans(LongoutId,LonginId,intmoney){dao。transOut(outId,money);inta10;算术异常dao。transIn(inId,money);}若是有查询方法,可以再贴注解Transactional添加注解属性Transactional(readOnlytrue)publicvoidlistXX(){}}ul(3)事务配置(基于注解JavaConfig配置)注解:({color{Blue}{Configuration}})配置({color{Blue}{import(配置子类)}})({color{Blue}{Bean}})配置创建bean对象({color{Blue}{ComponentScan}})IoC注解解析器({color{Blue}{EnableTransactionManagement}})事务注解解析器Transactional配置jdbc事务PropertySource配置引入的属性文件资源({color{Gray}{Component}})泛指组件({color{Gray}{Repository}})持久层({color{Gray}{Service}})业务层({color{Gray}{Controller}})控制层Value配置注入属性值Autowired配置注入属性值

陈梦回应质疑!国乒一姐愤怒!亲自辟谣至今仍未痊愈国乒女单中提到陈梦很多球迷都比较惋惜,在世乒赛中,她无缘单打决赛,失去了竞争国乒大满贯的机会,加上全运会受伤和结束的WTT世界杯上受伤,两次被王曼昱和王艺迪淘汰出局,很多球迷质疑陈10个宝宝7个龋齿,刷不到这3个地方,天天刷也白费你能想象,一个3岁的孩子,满嘴都是烂牙吗?最近两个月,带娃去了4趟牙科诊所补牙涂氟做根管治疗。。要说这10个娃里,有7个龋齿一点都不夸张。第4次全国口腔健康流行病学调查结果显示,在明明有大把国土,却非要把首都放在一个小岛上,丹麦到底图什么?爱美食爱生活,喜欢旅游和随手拍,关注我带你了解更多旅游知识!大千世界,无奇不有。按理说,一个国家的首都,是国家的核心,相当于人的大脑一样,所以很多国家的首都,都会选择在国家的陆地上面对弱旅,武磊终于开张!但是西班牙媒体毫不客气提出批评终于我们全村的希望,武球王时隔343天打破进球荒,在国王杯第二轮,客场但是面对的是第四级别的球队,球队也取得了胜利。虽然实力悬殊下西班牙人取胜的过程并不算很美妙,但是对于武球王来说游戏中常见的密码451,简单的数字背后,蕴藏的故事却不简单若是经常接触各种单机作品的玩家,在游戏过程中就会时常遇到需要找钥匙开门或是找密码开保险箱的桥段,有些制作团队会设计一连串复杂的谜团,把线索藏在书绘画,或是各种环境提示当中,让玩家自清朝一官员告老还乡,因太穷拉十几箱砖头撑场面,乾隆换成金银所谓廉树威,贪失信廉兴国,贪失家。反腐倡廉不仅是我国古代王朝的重中之重,也是民心之向,而得民心者便可得天下。说起这历史上的贪官污吏,像赵高和珅等人无不遗臭万年,而像包拯海瑞这等清廉第五人格选手故事MRCXingH赛场新光,星河璀璨从路人王到赛场新秀,从头号粉丝到明星队友,MRCXingH成功追星的故事传遍庄园。作为赛场新人,他毫不怯场,以一手稳定发挥,不时创造奇迹的救人位成为队伍强有力的后盾,稳定的博弈缜密为救场而生剑三小故事系列我的七秀成长之路月上柳梢,云影婆娑清歌妙舞,神采飞扬冰肌玉骨,日冠西天露浓花瘦,清音煮酒感时已暮,曲终人散。各位秀坊的小姐姐还有大兄弟们,你有留意过这些技能描述吗?以上几个技能分别是加buff的婆断尾故事如何延续守望先锋源氏半藏神龙之旅畅想源氏和半藏兄弟的故事,应该算是我的守望生涯里最喜欢的故事了。直到现在,在视频网站上打开双龙CG,仍然是许多此生无悔入守望入坑之作勾引我入坑的弹幕群。这个CG的优点真的非常多,从神话佟丽娅参加文代会太出众!穿小香风气质大逆袭,央视范竟派上用场近日,第十一次全国文代会正式召开,单单是看到这阵容也超级盛大,其中佟丽娅也在社交平台上晒出了自己参加文代会的照片,镜头下的佟丽娅也是越来越有央视范。现身隆重的会议,佟丽娅打扮也超级知名艺人连夜道歉香港艺人袁咏仪今日(14日)凌晨1时许在微博发文,回应其子之前在社交平台的失言造成误解,称她及时发现并立刻进行纠正,这实在是我俩作为父母之过。袁咏仪还郑重表示我们一家爱国爱港,支持
浓眉宣布摆烂!身材走样发福严重,承认68天没训练,詹皇彻底绝望北京时间6月12日,洛杉矶湖人下赛季崛起也无望了,现在看起来这支球队的核心超级巨星浓眉哥安东尼戴维斯已经开始摆烂了。今日有网友晒出了一段他和浓眉哥以及几个朋友进行私人聚会时候的视频57岁索菲王妃穿印花连衣裙亮相,浓浓夏日风,鞋子的配色亮了关注我,看王室八卦!英女王伊丽莎白二世的登基70周年白金禧年庆典落下帷幕,英国王室的各位成员又回到了生活的正轨上,开始出席各自的王室工作活动。索菲王妃是英国王室的三王妃,其丈夫是英群峰逶迤满目翠牧歌悠扬山谷幽天祝五台岭美得让人不敢靠近新甘肃每日甘肃网通讯员王守辉摄影报道五台岭,位于天祝藏族自治县中部,距县城华藏寺38公里,海拔3200多米,是通往青海互助县的门户,因自下而上五个阶梯而得名。登上山巅举目远眺,九曲水口印象桥影五一在疫情下的水口街晃荡,感觉街市太过宁静,或许是午后大家忙完了正事都在休息,懒得出来,而我这个异地的陌生人心怀好奇,总想找找她不一样的特质。常言道有水就有灵性,一方水土养一方人,皮蛋爱旅行美国竟然拥有2000年历史的村庄,你能相信吗?旅行头号周刊今日头条在家云旅游旅游弗拉特里角白顶的海浪以野蛮的方式狠狠地撞击着孤立的华盛顿海岸1970年,在一场猛烈的风暴后发现了一个马卡村庄,该村庄在300多年前被泥石流掩埋。新走进这个村子,就出不来了作为一个土生土长的兰溪人,且是一个从事文旅工作的土生土长的兰溪人,兰溪的各处景点中,于我来说最熟悉的莫过于因布局而神奇,因祖先而出名的诸葛八卦村。去过很多次却不觉乏味,每次都会捕捉群峰逶迤满目翠牧歌悠扬山谷幽天祝五台岭美得让人不敢靠近新甘肃每日甘肃网通讯员王守辉摄影报道五台岭,位于天祝藏族自治县中部,距县城华藏寺38公里,海拔3200多米,是通往青海互助县的门户,因自下而上五个阶梯而得名。登上山巅举目远眺,九曲(美丽中国)池杉湖湿地鹭鸟蹁跹莲荷盛开池杉湖湿地位于江苏省南京市与安徽省滁州市的交界处,水网交错,分布着5万多棵池杉树,形成了独特的水上森林湿地景观。仲夏时节,湿地里鹭鸟蹁跹,莲荷盛开。6月11日,鹭鸟栖息在池杉湖的树4分钟传射锁胜局!23岁新星欠薪苦练获欧洲队青睐,无愧中超清流2022年6月9日,这天晚上的中超联赛注定是属于戴伟浚的夜晚,凭借他1传1射建功,深足在中超第二轮以2比1战胜津门湖,豪取开赛二连胜。赛后,据体育记者报道,深足在赛季开始前仍未补齐个股分析宁德时代江淮汽车云天化特力A宁德时代公司简介宁德时代新能源科技股份有限公司的主营业务是专注于新能源汽车动力电池系统储能系统的研发生产和销售,致力于为全球新能源应用提供一流解决方案。公司亮点全球领先的新能源创新卖假酒,带假货?盘点五个带货不翻车的清流明星,个个清白干净张晨光直播卖酒被骂,期间受不住恶语而忍不住哭泣,一边抹泪一边鞠躬道歉。如此画面,让人心疼。英雄迟暮,何至于此?略感心酸。其实他直播带货被骂也没啥奇怪的,毕竟前边还有潘长江。他曾被质
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网