应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Spring入门案例

  Spring入门案例代码
  1。创建Maven的java项目
  2。pom。xml添加Spring的依赖jar包lt;?xmlversion1。0encodingUTF8?projectxmlnshttp:maven。apache。orgPOM4。0。0xmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:maven。apache。orgPOM4。0。0http:maven。apache。orgxsdmaven4。0。0。xsdmodelVersion4。0。0modelVersiongroupIdcom。itheimagroupIdspring01quickstartartifactIdversion1。0SNAPSHOTversiondependenciesdependencygroupIdorg。springframeworkgroupIdspringcontextartifactIdversion5。2。10。RELEASEversiondependencydependencygroupIdjunitgroupIdjunitartifactIdversion4。12versionscopetestscopedependencydependenciesproject
  3。创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类packagecom。itheima。dao;publicinterfaceBookDao{publicvoidsave();}packagecom。itheima。dao。impl;importcom。itheima。dao。BookDao;publicclassBookDaoImplimplementsBookDao{publicvoidsave(){System。out。println(bookdaosave。。。);}}packagecom。itheima。service;publicinterfaceBookService{publicvoidsave();}packagecom。itheima。service。impl;importcom。itheima。dao。BookDao;importcom。itheima。dao。impl。BookDaoImpl;importcom。itheima。service。BookService;publicclassBookServiceImplimplementsBookService{5。删除业务层中使用new的方式创建的dao对象privateBookDaobookDao;publicvoidsave(){System。out。println(bookservicesave。。。);bookDao。save();}6。提供对应的set方法publicvoidsetBookDao(BookDaobookDao){this。bookDaobookDao;}}
  4。resources下添加spring配置文件,并完成bean的配置
  applicationContext。xmlllt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsd!1。导入spring的坐标springcontext,对应版本是5。2。10。RELEASE!2。配置bean!bean标签标示配置beanid属性标示给bean起名字class属性表示给bean定义类型beanidbookDaoclasscom。itheima。dao。impl。BookDaoImplbeanidbookServiceclasscom。itheima。service。impl。BookServiceImpl!7。配置server与dao的关系!property标签表示配置当前bean的属性name属性表示配置哪一个具体的属性ref属性表示参照哪一个beanpropertynamebookDaorefbookDaobeanbeans
  注意:配置中的两个bookDao的含义是不一样的
  namebookDao中bookDao的作用是让Spring的IOC容器在获取到名称后,将首字母大写,前面加set找对应的setBookDao()方法进行对象注入
  refbookDao中bookDao的作用是让Spring能在IOC容器中找到id为bookDao的Bean对象给
  bookService进行注入
  综上所述,对应关系如下:
  5。从容器中获取对象进行方法调用packagecom。itheima;importcom。itheima。dao。BookDao;importcom。itheima。service。BookService;importorg。springframework。context。ApplicationContext;importorg。springframework。context。support。ClassPathXmlApplicationContext;publicclassApp{publicstaticvoidmain(String〔〕args){获取IOC容器ApplicationContextctxnewClassPathXmlApplicationContext(applicationContext。xml);BookServicebookService(BookService)ctx。getBean(bookService);bookService。save();}}
  以上完成了入门案例代码。
  bean基础配置
  bean基础配置(id与class)
  bean的name属性
  name为bean指定别名,别名可以有多个,使用逗号,空格、分号隔开。
  根据名称容器中获取bean对象
  publicclassAppForName{
  publicstaticvoidmain(String〔〕args){
  ApplicationContextctxnew
  ClassPathXmlApplicationContext(applicationContext。xml);
  此处根据bean标签的id属性和name属性的任意一个值来获取bean对象
  BookServicebookService(BookService)ctx。getBean(service4);
  bookService。save();
  }
  }
  bean作用范围scope配置
  bean为单例的意思是在Spring的IOC容器中只会有该类的一个对象
  bean对象只有一个就避免了对象的频繁创建与销毁,达到了bean对象的复用,性能高
  bean在容器中是单例的,会不会产生线程安全问题?
  如果对象是有状态对象,即该对象有成员变量可以用来存储数据的,因为所有请求线程共用一个bean对象,所以会存在线程安全问题。
  如果对象是无状态对象,即该对象没有成员变量没有进行数据存储的,因方法中的局部变量在方法调用完成后会被销毁,所以不会存在线程安全问题。
  封装实例的域对象,因为会引发线程安全问题,所以不适合。
  哪些bean对象适合交给容器进行管理?
  表现层对象业务层对象数据层对象工具对象
  bean实例化方法
  构造方法实例化!方式一:构造方法实例化beanbeanidbookDaoclasscom。itheima。dao。impl。BookDaoImpl
  Spring底层使用的是类的无参构造方法。关于Spring的构造方法实例化就已经学习完了,因为每一个类默认都会提供一个无参构造函数,所以其实真正在使用这种方式的时候,我们什么也不需要做。这也是我们以后比较常用的一种方式。
  静态工厂实例化!方式二:使用静态工厂实例化beanbeanidorderDaoclasscom。itheima。factory。OrderDaoFactoryfactorymethodgetOrderDao
  看到这,可能有人会问了,你这种方式在工厂类中不也是直接new对象的,和我自己直接new没什么太大的区别,而且静态工厂的方式反而更复杂,这种方式的意义是什么?
  主要的原因是:
  在工厂的静态方法中,我们除了new对象还可以做其他的一些业务操作,这些操作必不可少,如:
  publicclassOrderDaoFactory{
  publicstaticOrderDaogetOrderDao(){
  System。out。println(factorysetup。。。。);模拟必要的业务操作
  returnnewOrderDaoImpl();
  }
  }
  之前new对象的方式就无法添加其他的业务内容。
  实例工厂与FactoryBean
  接下来继续来研究Spring的第三种bean的创建方式实例工厂实例化:
  环境准备
  (1)准备一个UserDao和UserDaoImpl类
  publicinterfaceUserDao{
  publicvoidsave();
  }
  publicclassUserDaoImplimplementsUserDao{
  publicvoidsave(){
  System。out。println(userdaosave。。。);
  }
  }
  (2)创建一个工厂类OrderDaoFactory并提供一个普通方法,注意此处和静态工厂的工厂类不一样的地方是方法不是静态方法
  publicclassUserDaoFactory{
  publicUserDaogetUserDao(){
  returnnewUserDaoImpl();
  }
  }
  (3)编写AppForInstanceUser运行类,在类中通过工厂获取对象
  创建实例工厂对象
  UserDaoFactoryuserDaoFactorynewUserDaoFactory();
  通过实例工厂对象创建对象
  UserDaouserDaouserDaoFactory。getUserDao();
  userDao。save();
  实例工厂实例化
  具体实现步骤为:
  (1)在spring的配置文件中添加以下内容:
  beaniduserFactoryclasscom。itheima。factory。UserDaoFactory
  beaniduserDaofactorymethodgetUserDaofactorybeanuserFactory
  实例化工厂运行的顺序是:
  创建实例化工厂对象,对应的是第一行配置
  调用对象中的方法来创建bean,对应的是第二行配置
  factorybean:工厂的实例对象
  factorymethod:工厂对象中的具体创建对象的方法名,对应关系如下:
  factorymehod:具体工厂类中创建对象的方法名
  (2)在AppForInstanceUser运行类,使用从IOC容器中获取bean的方法进行运行测试publicclassAppForInstanceUser{publicstaticvoidmain(String〔〕args){ApplicationContextctxnewClassPathXmlApplicationContext(applicationContext。xml);UserDaouserDao(UserDao)ctx。getBean(userDao);userDao。save();}}
  实例工厂实例化的方式就已经介绍完了,配置的过程还是比较复杂,所以Spring为了简化这种配置方式就提供了一种叫FactoryBean的方式来简化开发。
  FactoryBean的使用
  具体的使用步骤为:
  (1)创建一个UserDaoFactoryBean的类,实现FactoryBean接口,重写接口的方法publicclassUserDaoFactoryBeanimplementsFactoryBeanUserDao{代替原始实例工厂中创建对象的方法publicUserDaogetObject()throwsException{returnnewUserDaoImpl();}返回所创建类的Class对象publicClasslt;?getObjectType(){returnUserDao。class;}}
  (2)在Spring的配置文件中进行配置beaniduserDaoclasscom。itheima。factory。UserDaoFactoryBean
  (3)AppForInstanceUser运行类不用做任何修改,直接运行
  查看源码会发现,FactoryBean接口其实会有三个方法,分别是:TgetObject()throwsException;Classlt;?getObjectType();defaultbooleanisSingleton(){returntrue;}
  方法一:getObject(),被重写后,在方法中进行对象的创建并返回
  方法二:getObjectType(),被重写后,主要返回的是被创建类的Class对象
  方法三:没有被重写,因为它已经给了默认值,从方法名中可以看出其作用是设置对象是否为单例,默认true。
  那如果想改成单例具体如何实现?
  只需要将isSingleton()方法进行重写,修改返回为false,即可FactoryBean创建对象publicclassUserDaoFactoryBeanimplementsFactoryBeanUserDao{代替原始实例工厂中创建对象的方法publicUserDaogetObject()throwsException{returnnewUserDaoImpl();}publicClasslt;?getObjectType(){returnUserDao。class;}publicbooleanisSingleton(){returnfalse;}}
  但是一般情况下我们都会采用单例,也就是采用默认即可。所以isSingleton()方法一般不需要进行重写。
  bean的生命周期
  首先理解下什么是生命周期?
  从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。
  bean生命周期是什么?bean对象从创建到销毁的整体过程。
  bean生命周期控制是什么?在bean创建后到销毁前做一些事情。
  生命周期设置
  添加生命周期的控制方法,具体的控制有两个阶段:
  bean创建之后,想要添加内容,比如用来初始化需要用到资源
  bean销毁之前,想要添加内容,比如用来释放用到的资源
  步骤1:添加初始化和销毁方法
  针对这两个阶段,我们在BooDaoImpl类中分别添加两个方法,方法名任意publicclassBookDaoImplimplementsBookDao{publicvoidsave(){System。out。println(bookdaosave。。。);}表示bean初始化对应的操作publicvoidinit(){System。out。println(init。。。);}表示bean销毁前对应的操作publicvoiddestory(){System。out。println(destory。。。);}}
  步骤2:配置生命周期
  在配置文件添加配置,如下:beanidbookDaoclasscom。itheima。dao。impl。BookDaoImplinitmethodinitdestroymethoddestory
  步骤3:运行程序
  从结果中可以看出,init方法执行了,但是destroy方法却未执行,这是为什么呢?
  Spring的IOC容器是运行在JVM中运行main方法后,JVM启动,Spring加载配置文件生成IOC容器,从容器获取bean对象,然后调方法执行main方法执行完后,JVM退出,这个时候IOC容器中的bean还没有来得及销毁就已经结束了所以没有调用对应的destroy方法。
  知道了出现问题的原因,具体该如何解决呢?
  close关闭容器ApplicationContext中没有close方法需要将ApplicationContext更换成ClassPathXmlApplicationContextClassPathXmlApplicationContextctxnewClassPathXmlApplicationContext(applicationContext。xml);调用ctx的close()方法ctx。close();运行程序,就能执行destroy方法的内容
  注册钩子关闭容器在容器未关闭之前,提前设置好回调函数,让JVM在退出之前回调此函数来关闭容器调用ctx的registerShutdownHook()方法ctx。registerShutdownHook();
  注意:registerShutdownHook在ApplicationContext中也没有
  两种方式介绍完后,close和registerShutdownHook选哪个?
  相同点:这两种都能用来关闭容器
  不同点:close()是在调用的时候关闭,registerShutdownHook()是在JVM退出前调用关闭。分析上面的实现过程,会发现添加初始化和销毁方法,即需要编码也需要配置,实现起来步骤比较多也比较乱。
  Spring提供了两个接口来完成生命周期的控制,好处是可以不用再进行配置initmethod和
  destroymethod
  接下来在BookServiceImpl完成这两个接口的使用:
  修改BookServiceImpl类,添加两个接口InitializingBean,DisposableBean并实现接口中的两个方法afterPropertiesSet和destroypublicclassBookServiceImplimplementsBookService,InitializingBean,DisposableBean{privateBookDaobookDao;publicvoidsetBookDao(BookDaobookDao){this。bookDaobookDao;}publicvoidsave(){System。out。println(bookservicesave。。。);bookDao。save();}publicvoiddestroy()throwsException{System。out。println(servicedestroy);}publicvoidafterPropertiesSet()throwsException{System。out。println(serviceinit);}}
  那第二种方式的实现,我们也介绍完了。
  小细节对于InitializingBean接口中的afterPropertiesSet方法,翻译过来为属性设置之后。对于BookServiceImpl来说,bookDao是它的一个属性setBookDao方法是Spring的IOC容器为其注入属性的方法afterPropertiesSet和setBookDao是setBookDao方法先执行
  DI依赖注入
  setter注入注入引用类型对象在bean中定义引用类型属性,并提供可访问的set方法publicclassBookServiceImplimplementsBookService{privateBookDaobookDao;publicvoidsetBookDao(BookDaobookDao){this。bookDaobookDao;}}
  配置中使用property标签ref属性注入引用类型对象beanidbookServiceclasscom。itheima。service。impl。BookServiceImplpropertynamebookDaorefbookDaobeanbeanidbookDaoclasscom。itheima。dao。imipl。BookDaoImpl
  2。注入简单数据类型
  步骤1:声明属性并提供setter方法publicclassBookDaoImplimplementsBookDao{privateStringdatabaseName;privateintconnectionNum;publicvoidsetConnectionNum(intconnectionNum){this。connectionNumconnectionNum;}publicvoidsetDatabaseName(StringdatabaseName){this。databaseNamedatabaseName;}publicvoidsave(){System。out。println(bookdaosave。。。databaseName,connectionNum);}}
  步骤2:配置文件中进行注入配置lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanidbookDaoclasscom。itheima。dao。impl。BookDaoImplpropertynamedatabaseNamevaluemysqlpropertynameconnectionNumvalue10beanbeaniduserDaoclasscom。itheima。dao。impl。UserDaoImplbeanidbookServiceclasscom。itheima。service。impl。BookServiceImplpropertynamebookDaorefbookDaopropertynameuserDaorefuserDaobeanbeans
  value:后面跟的是简单数据类型,对于参数类型,Spring在注入的时候会自动转换。
  对于setter注入方式的基本使用就已经介绍完了,对于
  引用数据类型使用的是
  对于简单数据类型使用的是
  构造器注入构造器注入引用数据类型
  步骤1:提供构造方法publicclassBookServiceImplimplementsBookService{privateBookDaobookDao;publicBookServiceImpl(BookDaobookDao){this。bookDaobookDao;}publicvoidsave(){System。out。println(bookservicesave。。。);bookDao。save();}}
  步骤2:配置文件中进行配置构造方式注入
  在applicationContext。xml中配置lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanidbookDaoclasscom。itheima。dao。impl。BookDaoImplbeanidbookServiceclasscom。itheima。service。impl。BookServiceImplconstructorargnamebookDaorefbookDaobeanbeans
  说明:
  标签中name属性对应的值为构造函数中方法形参的参数名,必须要保持一致。ref属性指向的是spring的IOC容器中其他bean对象。
  构造器注入多个引用数据类型
  步骤1:提供多个属性的构造函数
  步骤2:配置文件中配置多参数注入
  构造器注入多个简单数据类型
  步骤1:添加多个简单属性并提供构造方法publicclassBookDaoImplimplementsBookDao{privateStringdatabaseName;privateintconnectionNum;publicBookDaoImpl(StringdatabaseName,intconnectionNum){this。databaseNamedatabaseName;this。connectionNumconnectionNum;}publicvoidsave(){System。out。println(bookdaosave。。。databaseName,connectionNum);}}
  步骤2:配置完成多个属性构造器注入lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanidbookDaoclasscom。itheima。dao。impl。BookDaoImplconstructorargnamedatabaseNamevaluemysqlconstructorargnameconnectionNumvalue666beanbeaniduserDaoclasscom。itheima。dao。impl。UserDaoImplbeanidbookServiceclasscom。itheima。service。impl。BookServiceImplconstructorargnamebookDaorefbookDaoconstructorargnameuserDaorefuserDaobeanbeans当构造函数中方法的参数名发生变化后,配置文件中的name属性也需要跟着变这两块存在紧耦合,具体该如何解决?
  方式一:删除name属性,添加type属性,按照类型注入beanidbookDaoclasscom。itheima。dao。impl。BookDaoImplconstructorargtypeintvalue10constructorargtypejava。lang。Stringvaluemysqlbean这种方式可以解决构造函数形参名发生变化带来的耦合问题但是如果构造方法参数中有类型相同的参数,这种方式就不太好实现了
  方式二:删除type属性,添加index属性,按照索引下标注入,下标从0开始beanidbookDaoclasscom。itheima。dao。impl。BookDaoImplconstructorargindex1value100constructorargindex0valuemysqlbean这种方式可以解决参数类型重复问题但是如果构造方法参数顺序发生变化后,这种方式又带来了耦合问题
  介绍完两种参数的注入方式,具体我们该如何选择呢?强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现强制依赖指对象在创建的过程中必须要注入指定的参数可选依赖使用setter注入进行,灵活性强可选依赖指对象在创建过程中注入的参数可有可无Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入自己开发的模块推荐使用setter注入
  依赖自动装配IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配
  自动装配方式有哪些?按类型(常用)按名称按构造方法不启用自动装配
  自动装配只需要修改applicationContext。xml配置文件即可:
  (1)将标签删除
  (2)在标签中添加autowire属性lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanclasscom。itheima。dao。impl。BookDaoImpl!autowire属性:开启自动装配,通常使用按类型装配beanidbookServiceclasscom。itheima。service。impl。BookServiceImplautowirebyTypebeans
  注意事项:
  需要注入属性的类中对应属性的setter方法不能省略被注入的对象必须要被Spring的IOC容器管理按照类型在Spring的IOC容器中如果找到多个对象,会报NoUniqueBeanDefinitionException
  一个类型在IOC中有多个对象,还想要注入成功,这个时候就需要按照名称注入,配置方式为:lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanclasscom。itheima。dao。impl。BookDaoImpl!autowire属性:开启自动装配,通常使用按类型装配beanidbookServiceclasscom。itheima。service。impl。BookServiceImplautowirebyNamebeans
  最后对于依赖注入,需要注意一些其他的配置特征:
  1。自动装配用于引用类型依赖注入,不能对简单类型进行操作
  2。使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
  3。使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
  4。自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
  集合注入
  前面我们已经能完成引入数据类型和简单数据类型的注入,但是还有一种数据类型集合,集合中既可以装简单数据类型也可以装引用数据类型,对于集合,在Spring中该如何注入呢?
  先来回顾下,常见的集合类型有哪些?数组ListSetMapProperties
  举例
  (1)项目中添加添加BookDao、BookDaoImpl类publicinterfaceBookDao{publicvoidsave();}publicclassBookDaoImplimplementsBookDao{publicclassBookDaoImplimplementsBookDao{privateint〔〕array;privateListStringlist;privateSetStringset;privateMapString,Stringmap;privatePropertiesproperties;publicvoidsave(){System。out。println(bookdaosave。。。);System。out。println(遍历数组:Arrays。toString(array));System。out。println(遍历Listlist);System。out。println(遍历Setset);System。out。println(遍历Mapmap);System。out。println(遍历Propertiesproperties);}setter。。。。方法省略,自己使用工具生成}
  (2)resources下提供spring的配置文件,applicationContext。xml
  下面的所以配置方式,都是在bookDao的bean标签中使用进行注入lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeanidbookDaoclasscom。itheima。dao。impl。BookDaoImplbeanbeans
  注入数组类型数据propertynamearrayvalue100valuevalue200valuevalue300valuearrayproperty
  注入List类型数据propertynamelistlistvalueitcastvaluevalueitheimavaluevalueboxueguvaluevaluechuanzhihuivaluelistproperty
  注入Set类型数据propertynamesetsetvalueitcastvaluevalueitheimavaluevalueboxueguvaluevalueboxueguvaluesetproperty
  注入Map类型数据propertynamemapmapentrykeycountryvaluechinaentrykeyprovincevaluehenanentrykeycityvaluekaifengmapproperty
  注入Properties类型数据propertynamepropertiespropspropkeycountrychinaproppropkeyprovincehenanproppropkeycitykaifengproppropsproperty
  说明:property标签表示setter方式注入,构造方式注入constructorarg标签内部也可以写、list、set、map、props标签List的底层也是通过数组实现的,所以和标签是可以混用集合中要添加引用类型,只需要把标签改成标签,这种方式用的比较少

深夜22点!马奎尔做出争议表态曼联再遭重创,球迷骂声一片北京时间11月23日深夜23点,欧洲联赛传来最新消息,日前,针对索尔斯克亚的离开,马奎尔接受媒体采访做出了争议表态,他表示曼联成绩不佳不是一个人的问题,自己做到了所能做到的一切……为何地球上有伤口地球上的伤口在我们生活的地球上,我们往往只欣赏地球的山清水秀的完美,却没注意到地球有许多难以愈合的伤口。谁也不知道那些伤口是怎样形成的。几万年过去了,至今仍留给我们许多未……发布Vue项目到iisvue不是根据项目目录的地址访问的,是根据vuerouter转发路由访问url,在这里我们应该进行urlrewrite。第一步安装urlrewrite,下载地址https……美股涨欧股涨油价涨!美国战略石油储备降至40年来低点美国时间周三,波士顿联储行长柯林斯发表鸽派言论,表示支持美联储2月进一步放缓加息,仅加息25个基点。另外,美国2022年12月CPI数据即将于周四出炉,市场预期美国通胀状况会有……2月8日冬奥会看点谷爱凌冲击金牌羽生结弦大战金博洋宁忠岩出战北京时间2月7日,2022北京冬奥会第三比赛日的比赛已经结束,中国代表团在滑雪障碍技巧赛、短道速滑等项目中表现优异。8日,冬奥会将迎来第四比赛日的争夺,其中,羽生结弦将首次亮相……输不起?跳台滑雪比赛失利后,日媒抱怨中方场地影响其运动员发挥2022年北京冬奥会正在举行,各国运动员都拿出了自己的精彩表现。在近日举行的跳台滑雪比赛中,被寄予厚望的日本运动员高梨沙罗发挥不佳,仅仅名列第四,没有获得奖牌。这本来是是一件很……大衣哥一家有没有通过这件事炒作,获取流量的可能?从另一个观点看,聊聊大衣哥家那点事,最近,我看好多自媒体都在说大衣哥家的传闻,说什么的都有,我觉得咱们可以讨论一下,图片来源于网络这个大衣哥的儿子,朱小伟和他……可怕的纵容会害了下一代纵容是一种丧失原则的默许、甚至是一种变相的教唆,致使被纵容者的不良行为恣意发展,甚至走向歧途。其结果影响社会的正常秩序。破坏家庭中孩子的自尊心建立。我不知道这些人的纵容出……希特勒为何要将犹太人赶尽杀绝?希特勒为何仇恨犹太人?二战进行到1945年,法西斯阵营的败局日益明朗。4月20日是希特勒的生日,希特勒的这个生日过得并不快乐,因为,当时的柏林已被苏军包围了四分之三,陷落……凡人养生延寿养生的含义中国古代把保健延年活动叫做养生,把养生的理论和方法叫做养生之道,因其目的是为了延年益寿,所以又叫寿道寿道就是养生的道理,《内经》中说:夫道者,年皆百岁。意思就是……马化腾也很不解为什么你们都放弃了QQ等级?说到QQ,相信大部分的80后、90后都是非常熟悉的,因为在微信这个社交软件没有出现之前,QQ是当时国内最大的社交软件,但是如今随着互联网的发展,微信也逐渐的渗透到人们的生活当中……华为手机鸿蒙系统隐藏的高级版闹钟,你会用吗?这么简单,快试试华为手机鸿蒙系统隐藏的高级版闹钟,你会用吗?方法特别简单,快试试!大家好,我是秦韵莞香,有很多朋友反映说,华为手机默认自带的闹钟,只能选择播放手机自带的铃声和手机内存里的……
南岳区小窗口彰显大情怀4月3日,南岳区政务中心个体工商户设立登记窗口迎来了一位特殊的客户,他在窗口徘徊许久,迟迟未选定自己需要咨询的窗口。南岳区市场监管局行政审批股工作人员及时察觉了异样,主动……聚焦315丨扫码价是售价的近10倍知名品牌展销店买不到经典款大众网海报新闻记者贺辉李义方张珈玮济南报道酒类商品尤其是白酒价格一直以来都存在同款产品不同渠道价格差别大、高端品牌加价提货、扫码价与实际价格差距过大等诸多问题。近日,大众……聚焦315外出旅游投资理财,这些法律提示请收好!为提升消费者法律意识,切实保障消费者合法权益,积极营造全民懂法、全民普法的良好氛围,315消费者权益日到来之际,通州法院民三庭法官梁睿诗前往北京市通州区玉桥南里南社区,以新类型……PlayStationPlus上的5款最佳独立游戏独立游戏允许玩家体验规模较小的游戏。通常,这些独立设计的标题的舒适性和复杂性,如果不是在某些方面可以与之竞争,也会超过AAA产品。无论是通过与生俱来的魅力还是对游戏设计更基本的……库里最后2分钟连得11分1封盖追进加时,加时独得9分勇士主场125116通过加时击败雄鹿,比赛第四节还剩2分05秒时,勇士还落后对手8分,不过之后斯蒂芬库里发挥出色,帮助球队将比赛追入加时,并在加时赛中率队取胜。第四节最后……你永远在我心里你永远在我心里写给相知相惜的异性知己作者:雅致丝语编辑:秋枫你,悄悄地走进我心里但我,从未说过爱你只怕,苍白了纯美的情谊你,轻轻地走进……摆脱束缚!美商海盗船推出新款HS55WIRELESS游戏耳机摆脱束缚、掌控你的节奏!美商海盗船推出新款HS55WIRELESS游戏耳机备受游戏玩家、内容创作者和PC装机者青睐的世界知名发烧组件及系统厂商美商海盗船(NASDAQ:C……王者荣耀技能和方向键需要互动的4位英雄,木兰光速沉默有技巧头条创作挑战赛文丨王者可儿原创在王者荣耀众多英雄中,很多英雄的技能都设计的比较有特色,比如百里守约、上官婉儿等等。还有一些英雄,他们在释放技能的时候还需要和移动键联……孕期能吃芒果吗,吃芒果会让宝宝变黄?孕期吃芒果的好处要知道芒果是我们常见的水果,很多小孩子和女性朋友都喜欢吃,因为它有着很香的气味,果肉也很软,制作成芒果奶昔、冰淇淋等更受欢迎。闺蜜小君从小就爱吃芒果,在她们老家还有各种吃芒果的……云南旅游昆明半日自由行散记(图)昆明作为云南省会城市,记者曾经多次光顾此地。特别是近日我的第八次云南行中的一次为期11天的滇东南之旅,更是首站就来到了这座令人感到十分温暖的春城。昆明机场(摄影:冯赣勇)……一图在手,社区美好生活尽在掌握!宝山区大场镇发布文旅地图4月8日是上海市民文化节城市美育日,在当天举行的行知读书会特别策划活动上,宝山区大场镇发布了行在大场、知其万象文旅地图。在地图前期策划过程中,大场镇成立了工作小组,对镇域……观点赛力斯许林新能源汽车生存艰难,有品牌卖一辆亏10万元文:懂车帝原创刘艺伟〔懂车帝原创行业〕3月31日4月2日,中国电动汽车百人会论坛(2023)在北京举行。在4月2日上午举行的以科技重塑新能源汽车用户体验为主题的高层……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网