范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

还不会SpringBoot项目模块分层?来这手把手教你

  前言缘由
  经常看到网上很多优秀的开源项目中,代码简洁,模块分层完美。反观自己代码层级混乱,,却不知如何整理分层。此文手把手教你一步一步创建模块,左手右手一个慢动作。结合本人实际开发及个人项目中分层思路的分享,大神请勿喷。主要目标熟练掌握SpringBoot项目分层思路,丝滑拆分模块熟悉代码层级依赖,规范化管理模块分布手把手实战学习,理论实践相结合‍试用人群对于Springboot熟悉但是不知道合理分层小白有自己分层思路可以互相分享学习水图
  下图反面教材,传统单体应用,结构臃肿
  下图分层截选自本人的一个小项目,模块清晰,分工明确
  我们要实现的小栗子的分层
  正文1.IDEA新建项目
  起名第一步,一个好名字,说不定是个好的开始
  假如我们的项目是个聊天相关的项目,英文对应chat,所以定义项目名为chat-boot,其他的以此效仿
  点击New->project
  选择Maven项目,并选择合适JDK版本,点击Next
  录入项目名称,并填写GAV坐标,点击Finish
  删除无用文件及目录,如src目录和*.iml文件
  删除后项目目录
  修改pom.xml中依赖,增加spring-boot-starter-parent       org.springframework.boot      spring-boot-starter-parent      2.3.1.RELEASE   复制代码
  2.创建子模块-dependencies(依赖层)
  右击项目chat-boot,new ->Moudle新建模块chat-boot-dependencies
  选择对应Module SDK版本,本人选择jdk1.8
  填写子模块名 chat-boot-dependencies,然后检查对应GAV,点击Finish
  生成子模块chat-boot-dependencies如下图
  删除chat-boot-dependencies下无用文件及目录,如src目录,删除无用目录如下
  完善chat-boot-dependencies下pom.xml依赖, 常用依赖放入,作为依赖主体,以下是本狗常用依赖,可酌情选择;记得把packaging改为pom<?xml version="1.0" encoding="UTF-8"?>               chat-boot         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-dependencies      pom               8         8         UTF-8         UTF-8         8.0.17         1.1.21         3.4.1         1.2.75         5.5.8         1.18.12         4.2.0         2.9.2         2.9.2         2.0.4         4.4.5.B         1.3.2         3.2.0                                                               com.baomidou                 mybatis-plus-boot-starter                 ${mybatis-plus.version}                                                         mysql                 mysql-connector-java                 ${mysql-connector-java.version}                                                         com.alibaba                 druid                 ${druid.version}                                                         com.alibaba                 fastjson                 ${fastjson.version}                                                         cn.hutool                 hutool-all                 ${hutool.version}                                                         org.projectlombok                 lombok                 ${lombok.versin}                                                         io.springfox                 springfox-swagger2                 ${springfox-swagger2.version}                                                         io.springfox                 springfox-swagger-ui                 ${springfox-swagger-ui.version}                                                         com.github.xiaoymin                 knife4j-spring-boot-starter                 ${knife4j.version}                                                         cn.afterturn                 easypoi-base                 ${easypoi.version}                                                         com.github.binarywang                 weixin-java-miniapp                 ${weixin.version}                                                         org.apache.shiro                 shiro-spring                 ${shiro.version}                                                         com.auth0                 java-jwt                 ${jwt.version}                             复制代码重点
  此处用的标签是 dependencyManagement,
  dependencyManagement只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。3.创建子模块-main(主启动层)
  右击项目chat-boot,new ->Moudle新建模块chat-boot-main
  选择对应Module SDK版本,本狗选择jdk1.8,点击Next
  填写子模块名 chat-boot-main,然后检查对应GAV,点击Finish
  生成子模块chat-boot-main如下图
  完善chat-boot-main模块下pom.xml中依赖引入必要依赖完善profiles标签中环境相关配置build标签中插件<?xml version="1.0" encoding="UTF-8"?>               chat-boot         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-boot-main               8         8                                                  net.javadog.chat                 chat-boot-dependencies                 1.0-SNAPSHOT                 pom                 import                                                                org.springframework.boot             spring-boot-starter-web                                        org.projectlombok             lombok                                        io.springfox             springfox-swagger2                                        io.springfox             springfox-swagger-ui                                        com.github.xiaoymin             knife4j-spring-boot-starter                             chat                                       org.springframework.boot                 spring-boot-maven-plugin                                                                                            repackage                                                                                                     true                                                                              src/main/webapp                 false                                           src/main/resources                 true                                           src/main/java                                      **/*.xml                                                                        local                              local                                           true                                            dev                              dev                                            prod                              prod                             复制代码重点配置引入依赖chat-boot-dependencies,用作此模块依赖引入                              net.javadog.chat              chat-boot-dependencies              1.0-SNAPSHOT              pom              import                  复制代码配置build标签用于完善插件plugins,其中包含maven-compiler-plugin和maven-resources-plugin                                       org.apache.maven.plugins                 maven-compiler-plugin                 3.1                                      ${java.version}                     ${java.version}                                                            org.apache.maven.plugins                 maven-resources-plugin                 2.6                                                               @                                          false                                                                              src/main/webapp                 false                                           src/main/resources                 true                                           src/main/java                                      **/*.xml                                             复制代码配置profiles环境变量标签,用于方便打包切换,本狗设置了 local、dev、prod三种环境                 local                        local                                  true                                dev                        dev                                prod                        prod                   复制代码
  操作可在IDEA右上角方便切换环境
  切记一定主动Reload一下Maven依赖 切记一定主动Reload一下Maven依赖 切记一定主动Reload一下Maven依赖
  在chat-boot-main模块中加入启动类,在src/main/java下右键New=>Java Class
  录入启动类名ChatApplication
  完善ChatApplication启动类代码package net.javadog.chat;  import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; import springfox.documentation.swagger2.annotations.EnableSwagger2;  import java.net.InetAddress; import java.net.UnknownHostException;  /**  * @author: hdx  * @Date: 2023-01-28 11:24  * @version: 1.0  **/ @SpringBootApplication @ServletComponentScan @Slf4j @EnableSwagger2 @EnableKnife4j public class ChatApplication {     public static void main(String[] args) throws UnknownHostException {         // 启动类         ConfigurableApplicationContext application = SpringApplication.run(ChatApplication.class, args);         // 打印基础信息         info(application);     }      static void info(ConfigurableApplicationContext application) throws UnknownHostException {         Environment env = application.getEnvironment();         String ip = InetAddress.getLocalHost().getHostAddress();         String port = env.getProperty("server.port");         String active = env.getProperty("spring.profiles.active");         String contextPath = env.getProperty("server.servlet.context-path");         if (contextPath == null) {             contextPath = "";         }         log.info(" ---------------------------------------------------------- 	" +                 "欢迎访问  	https://blog.javadog.net 	" +                 "示例程序【" + active + "】环境已启动! 地址如下: 	" +                 "Local: 		http://localhost:" + port + contextPath + " 	" +                 "External: 	http://" + ip + ":" + port + contextPath + " " +                 "Swagger文档: 	http://" + ip + ":" + port + contextPath + "/doc.html " +                 "----------------------------------------------------------");     } } 复制代码
  配置application.yml文件
  application.yml#============================# # server 配置 #============================# server:   port: 82   max-http-header-size: 10240   servlet:     context-path: /chat/v1  #============================# # spring 配置 #============================# spring:   application:     # 应用名     name: chat   profiles:     active: @spring.active@   servlet:     multipart:       max-request-size: 100MB       max-file-size: 100MB   jackson:     time-zone: GMT+8     date-format: yyyy-MM-dd HH:mm:ss.SSS     locale: zh_CN     serialization:       # 格式化输出       indent_output: false   main:     allow-circular-references: true     #解决swagger版本路径不兼容问题   mvc:     pathmatch:       matching-strategy: ant_path_matcher  #============================# # mybatisplus 配置 #============================# mybatis-plus:   mapper-locations: classpath:mapper/*.xml   configuration:     map-underscore-to-camel-case: true     cache-enabled: true     lazy-loading-enabled: true     multiple-result-sets-enabled: true     log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl   global-config:     banner: false     db-config:       id-type: assign_id       table-underline: true     enable-sql-runner: true       #数据库类型     db-type: MYSQL   configuration-properties:     prefix:     #如果数据库为postgresql,则需要配置为blobType: BINARY     blobType: BLOB     #如果数据库为oracle或mssql,则需要配置为boolValue: 1     boolValue: true  #============================# # logging 配置 #============================# logging:   level:     root: info   file:     path: /root/javadog/chat/logs/${spring.application.name}/     name: ${spring.application.name}   logback:     rollingpolicy:       max-history: 7       max-file-size: 10MB  #============================# # file 配置 #============================# file:   # 静态附件前缀   static-prefix: attach   # 上传的文件对外暴露的访问路径   access-path-pattern: /${file.static-prefix}/**   # 文件上传目录   upload-folder: /root/javadog/chat/   # 文件上传最大   max-post-size: 10 复制代码
  application-local.yml#服务配置 server:   port: 8001   max-http-header-size: 10240  # Mysql数据库 spring:   datasource:     driver-class-name: com.mysql.cj.jdbc.Driver     url: jdbc:mysql://localhost:3306/chat-boot?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true     username: root     password: root   redis:     host: localhost     port: 6379     password: 复制代码
  application-dev.yml#服务配置 server:   port: 7001   max-http-header-size: 10240  # mybatisplus 配置 mybatis-plus:   configuration:     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 复制代码
  application-prod.yml#服务配置 server:   port: 8005 复制代码
  顺便加一下logback-spring.xml 日志文件<?xml version="1.0" encoding="UTF-8" ?>                                                    ${application.name}                                                      ${CONSOLE_LOG_PATTERN}                                                                                               ${logging.path}/info/${application.name}-info.log                              ${logging.path}/info/${application.name}-info.%d{yyyy-MM-dd}.%i.log                                       ${logging.file.max-size}                                                   ${logging.file.max-history}                                       true                              ${FILE_LOG_PATTERN}                                                             warn                 ACCEPT                 DENY                          ${logging.path}/warn/${application.name}-warn.log                              ${logging.path}$/warn/${application.name}-warn.%d{yyyy-MM-dd}.%i.log                                      ${logging.file.max-size}                                                   ${logging.file.max-history}                                           ${FILE_LOG_PATTERN}                                                             error                 ACCEPT                 DENY                          ${logging.path}/error/${application.name}-error.log                              ${logging.path}/error/${application.name}-error.%d{yyyy-MM-dd}.%i.log                                      ${logging.file.max-size}                                                   ${logging.file.max-history}                                           ${FILE_LOG_PATTERN}                                                                                        复制代码
  启动一下项目试试,启动如下证明成功。如果报错少依赖请再拉一下Maven依赖!!!
  4.创建子模块-module(模块层)
  右击项目chat-boot,new ->Moudle新建模块chat-boot-module
  填写子模块名 chat-boot-module,然后检查对应GAV,点击Finish
  生成子模块chat-boot-module如下图
  删除chat-boot-module下无用文件及目录,如src目录,删除无用目录如下
  自此外部大框架初步搭建成功
  完善chat-boot-module下pom.xml依赖,如lombok,web等必要依赖<?xml version="1.0" encoding="UTF-8"?>               chat-boot         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-boot-module     pom              chat-boot-common         chat-boot-controller         chat-boot-dao         chat-boot-dto         chat-boot-entity         chat-boot-service                    8         8                                                  net.javadog.chat                 chat-boot-dependencies                 ${project.parent.version}                 pom                 import                                                                org.springframework.boot             spring-boot-starter-web                                        com.github.binarywang             weixin-java-miniapp                                        org.projectlombok             lombok                                        cn.hutool             hutool-all                                        io.springfox             springfox-swagger2                                        io.springfox             springfox-swagger-ui                                        com.github.xiaoymin             knife4j-spring-boot-starter                                        org.apache.shiro             shiro-spring                                        com.auth0             java-jwt                                        com.baomidou             mybatis-plus-boot-starter                               mysql             mysql-connector-java                 复制代码
  一定要重新拉取依赖! 一定要重新拉取依赖! 一定要重新拉取依赖!
  5.创建chat-boot-module模块下对应功能分层
  目前本狗分为如下6层common-共通层controller-控制器层dao-数据持久层dto-数据传输对象层entity-实体层service-业务逻辑层
  依次按照上述添加模块方式进行新增子模块,本狗如下示例一个,其余都如法炮制
  右击项目chat-boot-module,new ->Moudle新建模块chat-boot-common
  一定看清楚父模块是否正确 一定看清楚父模块是否正确 一定看清楚父模块是否正确
  确认父级模块后,点击Finish,生成chat-boot-common模块
  依次按照上述方法,新建其他模块
  chat-boot-controller模块
  chat-boot-dao模块
  chat-boot-dto模块
  chat-boot-entity模块
  chat-boot-service模块
  总体模块雏形基本完成
  6.实际流程填充模拟正常前端请求到后台服务调用过程,进行实际代码补充
  在chat-boot-entity下新建实体类User,在src/main/java下右键New=>Java Class,录入包名及类名
  package net.javadog.chat.entity;  import lombok.Data;  /**  * @author: hdx  * @Date: 2023-01-28 14:26  * @version: 1.0  **/ @Data public class User {      private Long id;      private String username;      private String idCard; }  复制代码
  在chat-boot-dto下新建目request和response,分别代表请求传输对象和返回传输对象,并分别在目录下创建UserRequest.java和UserResponse.java
  package net.javadog.chat.request;  import lombok.Data;  /**  * @author: hdx  * @Date: 2023-01-28 14:59  * @version: 1.0  **/ @Data public class UserRequest {      private Long id;      private String username; } 复制代码package net.javadog.chat.response;  import lombok.Data;  /**  * @author: hdx  * @Date: 2023-01-28 14:59  * @version: 1.0  **/ @Data public class UserResponse {      private Long id;      private String username; } 复制代码
  在chat-boot-dao下修改chat-boot-dao模块下修改pom.xml文件依赖,引入chat-boot-entity;并增对应UserMapper.javapackage net.javadog.chat.mapper;  import com.baomidou.mybatisplus.core.mapper.BaseMapper; import net.javadog.chat.entity.User;  /**  * 用户mapper  *  * @author: hdx  * @Date: 2023-01-10 11:43  * @version: 1.0  **/ public interface UserMapper extends BaseMapper { }  复制代码<?xml version="1.0" encoding="UTF-8"?>               chat-boot-module         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-boot-dao               8         8                                 net.javadog.chat             chat-boot-entity             ${project.parent.version}                 复制代码
  在chat-boot-service下新建目录service和impl,并在对应目录下新建UserService.java和UserServiceImpl.java,并修改chat-boot-service模块下修改pom.xml文件依赖,引入chat-boot-dto,chat-boot-dao
  package net.javadog.chat.service;  import com.baomidou.mybatisplus.extension.service.IService; import net.javadog.chat.entity.User;  /**  * 用户接口  *  * @author: hdx  * @Date: 2023-01-10 11:53  * @version: 1.0  **/ public interface UserService extends IService {  }  复制代码package net.javadog.chat.service.impl;  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.javadog.chat.entity.User; import net.javadog.chat.mapper.UserMapper; import net.javadog.chat.service.UserService; import org.springframework.stereotype.Service;  /**  * 用户接口实现类  *  * @author: hdx  * @Date: 2023-01-10 11:55  * @version: 1.0  **/ @Service public class UserServiceImpl extends ServiceImpl implements UserService {  } 复制代码<?xml version="1.0" encoding="UTF-8"?>               chat-boot-module         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-boot-service               8         8                                 net.javadog.chat             chat-boot-dao             ${project.parent.version}                               net.javadog.chat             chat-boot-dto             ${project.parent.version}                 复制代码
  在chat-boot-controller创建UserController.java,并修改chat-boot-controller模块下修改pom.xml文件依赖,引入chat-boot-dto,chat-boot-service
  package net.javadog.chat.controller;  import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import net.javadog.chat.entity.User; import net.javadog.chat.request.UserRequest; import net.javadog.chat.response.UserResponse; import net.javadog.chat.service.UserService; import org.springframework.web.bind.annotation.*;  import javax.annotation.Resource;  /**  * 用户控制器  *  * @author: hdx  * @Date: 2022-12-07 15:48  * @version: 1.0  **/ @Api(tags = "用户控制器") @RestController @RequestMapping("/user") public class UserController {      @Resource     private UserService userService;      @ApiOperation(value = "用户详情", notes = "用户详情")     @GetMapping     public UserResponse detail(UserRequest userRequest){         UserResponse userResponse = new UserResponse();         User user = userService.getById(userRequest.getId());         BeanUtil.copyProperties(user, userResponse);         return userResponse;     }  }  复制代码
  重要补充 1.切记修改chat-boot-main下的pom.xml依赖,将chat-boot-controller模块加入 2.切记修改chat-boot-main下的pom.xml依赖,将chat-boot-dao模块加入 3.切记修改启动类ChatApplication中加入@MapperScan注解
  <?xml version="1.0" encoding="UTF-8"?>               chat-boot         net.javadog.chat         1.0-SNAPSHOT          4.0.0      chat-boot-main               8         8                                                  net.javadog.chat                 chat-boot-dependencies                 1.0-SNAPSHOT                 pom                 import                                                                org.springframework.boot             spring-boot-starter-web                                        org.projectlombok             lombok                                        io.springfox             springfox-swagger2                                        io.springfox             springfox-swagger-ui                                        com.github.xiaoymin             knife4j-spring-boot-starter                                         net.javadog.chat             chat-boot-controller             ${project.parent.version}                                        net.javadog.chat             chat-boot-dao             ${project.parent.version}                                                           org.apache.maven.plugins                 maven-compiler-plugin                 3.1                                      ${java.version}                     ${java.version}                                                            org.apache.maven.plugins                 maven-resources-plugin                 2.6                                                               @                                          false                                                                              src/main/webapp                 false                                           src/main/resources                 true                                           src/main/java                                      **/*.xml                                                                        local                              local                                           true                                            dev                              dev                                            prod                              prod                             复制代码
  package net.javadog.chat;  import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; import springfox.documentation.swagger2.annotations.EnableSwagger2;  import java.net.InetAddress; import java.net.UnknownHostException;  /**  * @author: hdx  * @Date: 2023-01-28 11:24  * @version: 1.0  **/ @SpringBootApplication @ServletComponentScan @Slf4j @EnableSwagger2 @EnableKnife4j @MapperScan(basePackages = {"net.javadog.chat.mapper"}) public class ChatApplication {     public static void main(String[] args) throws UnknownHostException {         // 启动类         ConfigurableApplicationContext application = SpringApplication.run(ChatApplication.class, args);         // 打印基础信息         info(application);     }      static void info(ConfigurableApplicationContext application) throws UnknownHostException {         Environment env = application.getEnvironment();         String ip = InetAddress.getLocalHost().getHostAddress();         String port = env.getProperty("server.port");         String active = env.getProperty("spring.profiles.active");         String contextPath = env.getProperty("server.servlet.context-path");         if (contextPath == null) {             contextPath = "";         }         log.info(" ---------------------------------------------------------- 	" +                 "欢迎访问  	https://blog.javadog.net 	" +                 "示例程序【" + active + "】环境已启动! 地址如下: 	" +                 "Local: 		http://localhost:" + port + contextPath + " 	" +                 "External: 	http://" + ip + ":" + port + contextPath + " " +                 "Swagger文档: 	http://" + ip + ":" + port + contextPath + "/doc.html " +                 "----------------------------------------------------------");     } } 复制代码7.示例DB更新模拟正常前端请求到后台服务调用过程,进行实际代码补充
  DROP TABLE IF EXISTS `user`; CREATE TABLE `user`  (   `id` bigint(20) NOT NULL COMMENT "id",   `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "用户名",   `id_card` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT "身份证",   PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;  -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, "JavaDog", "123123"); 复制代码8.访问测试
  浏览器访问http://localhost:8001/chat/v1/user?id=1
  测试成功如下图所示
  总结
  以上示例只是简单示范分层思路,其中代码逻辑实现方式有很多种,大家选取适用自己就好,希望自己的思路能对大家有帮助
  如遇缺少依赖情况,一定要重新拉取依赖!

内娱女明星秀场迷惑行为大赏头条创作挑战赛米兰巴黎时装周搞得热热闹闹,感觉内娱半壁明星都跑去看秀了。各路美图大家都看饱了哇?get了一对小姐姐,后续不拍个双女主剧说不过去在这场阔别三年重装归来引发的时尚资源大黄子韬晒泳照露胸毛被骂,冤不冤?3月8日,正值妇女节,当女性们收获祝福时,男星黄子韬因为一组游泳照收获了一片骂声。(黄子韬ins晒照)当天黄子韬在ins晒自己一组裸上半身的泳照,茂密的胸毛和彩色文身十分醒目,引起甄嬛传28病殃殃的端妃,是如何凭借一格电量走到最后?阅读此文之前,麻烦您点击下关注,方便与您讨论分享,也能及时观看下一篇精彩文章。非常感谢您的关注!文接上期。端妃,一位神奇的女子,一出场就是一副命不久矣的病秧子模样。可是,她硬是凭着一天九个瓜,人设翻车被抢劫老戏骨移民,一个比一个荒唐3月8日妇女节,娱乐圈却发生了天翻地覆的变化。有人被抢劫有人人设崩塌等等,一个比一个出乎意料,不得不说贵圈真乱!01容祖儿被抢劫3月8日这天,容祖儿接受采访时透露她在美国竟然遭到意冯小刚非诚勿扰3成功备案,网友看到满江红成功心动了?近日,有网友发现,电影非诚勿扰3已经成功备案,冯小刚将作为编剧回归本片拍摄,不过不出意外的话,冯小刚也会是这部电影的导演!消息一出,引发无数人关注,毕竟当年这个系列的电影还是非常成激烈交锋!今年五一档已定档十部新片文羊城晚报全媒体记者聂青据灯塔专业版显示,今年的五一档竞争十分激烈,截至目前已有10部新片将上映时间锁定在这个档期。影片涵盖的类型非常丰富,包括动作灾难喜剧动画等。距离五一档还有一到底是谁动了明星的金饭碗娱评大赏两会终于把炮口对向文娱产业了,忽然醒悟或许前段时间央视关于绝望的文盲是在预热和试探吗?但仔细看清楚后,好像不是一回事。但二者又是有联系的,因为都是对文娱产业的担忧。那我们就超模肯豆KendllJenner与新男友约会,前男友全是NBA球星近日,外媒拍到27岁的超模肯豆KendallJenner肯达尔詹娜与最新绯闻男友BadBunny一起约会吃晚餐。肯豆KendallJenner的亲妹妹凯莉詹娜KylieJennerLOL0击败DRX豪取十连胜北京时间3月9日,LCK春季赛第八周第二天晚上的比赛由排名倒数第二的DRX挑战榜首九连胜的T1。S12全球总决赛冠军DRX这个赛季的状态低迷,已经确定无缘季后赛,而T1在对线期就打科学家使用宇宙射线绘制埃及大金字塔未开发的走廊多亏了宇宙射线,古代世界最后剩下的奇迹的秘密正在被揭示。一条通往吉萨大金字塔的走廊吉萨大金字塔是埃及最大的著名地标,屹立了大约4,500年。但构成坟墓和堡垒的2万块并非坚不可摧。几巾帼她力量扬帆再起航鲁煤五队开展三八妇女节系列活动3月7日,山东省煤田地质局五队组织女职工开展三八妇女节系列活动,庆祝第113个三八国际妇女节。党委委员副队长工会主席曹相东出席并致辞。他指出,队工会将继续一如既往地支持妇女工作,形
印尼羽毛球大师赛王祉怡晋级四强1月27日,王祉怡在比赛中回球。新华社记者徐钦摄当日,在印度尼西亚雅加达举行的2023年印尼羽毛球大师赛女子单打四分之一决赛中,中国选手王祉怡以2比0战胜泰国选手李美妙,晋级半决赛TT如湖人升至季后赛区詹姆斯应进入MVP讨论!帕金斯听后扶额直播吧1月28日讯特里斯坦汤普森今日做客NBACOUNTDOWN节目,并谈到湖人球星詹姆斯。TT说道如果湖人能成为67号种子,战绩升到季后赛区,詹姆斯就应该进入MVP谈论的范畴。帕山东泰山,这一次请不要再装睁眼瞎吴兴涵事件一波未平一波又起,就在事件的女主角声讨吴兴涵欺骗感情的同时,戴琳借款和赌球风波又冲上了热搜,虽然戴琳及时进行了回应,但是球迷们好像不买账,导致事件进一步升级。自从文旅接手中西部地区县域乡村足球系列活动在甘肃省火热进行中国甘肃网2月1日讯据甘肃日报报道(新甘肃甘肃日报记者陈泳)记者近日从省足球协会获悉,由中国足球发展基金会主办省足球协会承办的2022年全民健身健康中国中西部地区(甘肃省)县域乡村每日一冷全世界看好纽卡取胜,我觉得有可能爆冷,10杨院长解说足球第一,明天2月1日凌晨四点的英联杯比赛大方向南安普顿顶多输一个,现在是五层楼的高度说顶多输一个守住门槛,这话没毛病。第二,其次纽卡斯尔联存在爆冷可能性,比分11或002换1!湖人火箭交易方案,锋线防守悍将小马丁辅佐詹姆斯冲击冠军据NBA记者KellyIko报道,多支球队有意得到小马丁,有的球队还考虑给出首轮选秀权。湖人队也想得到这名运动能力出色的锋线防守悍将,目前已经给出具体报价方案。具体交易方案湖人队获细谈肾虚,揭开关于肾虚的那些秘密!一什么是肾虚?首先要明确一个概念中医的肾西医的肾。中医的肾不是西医解剖学之上的肾。因为这两个名字是一样的,有一定的联系,所以经常被误解。其实两者是不同的概念。中医学之中的肾涉及的生春季白癜风高发的主要因素对于一些皮肤病,白癜风是其中之一。春季是白癜风高发季节。许多人在这个季节生病,许多病人在这个季节复发或加重。因此,进入春季,白癜风患者必须重视科学的防治工作。那么,导致春季白癜风高今天我们来科普耐克核心当家科技ZoomAir气垫的知识而我们知道ZoomAir也根据其运动鞋档次的不同针对性的不同也呈现出各式各样的形态。气垫的分类1。Airsole最早的气垫类型,由上世纪70年代航空工程师弗兰克鲁迪发明,被nike朱雨玲曾经是追赶榜样,范思琦一直在逆风上扬,活出自我头条创作挑战赛WTT多哈挑战赛范思琦击败队友张瑞夺得女单冠军,基本上意味着拿到了一张参加三月份大满贯赛事的门票。范思琦如今也成为了五朵金花之外的第六朵金花,算是进入了准主力层的门槛扛不住压力,以色列总理正考虑向乌克兰提供铁穹防御系统几乎所有的美国盟友,都在美国的鼓励下,半被迫做出了提供武器的承诺,但也有部分美国盟友始终不愿意提供任何武器。就像以色列,这个与美国亲密无间的国家,多次拒绝了乌克兰的要求,同时也拒绝