专栏:高并发项目
👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者
📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人
 
  
创建父工程
1 创建名为 shopping 的普通 maven工程
2 修改pom文件,将 shopping 工程设置为父工程,并将 shopping 的父工程设置为 spring-boot-starter-parent 。
<groupId>com.ittxc</groupId>
<artifactId>shopping</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 该工程为SpringBoot工程 -->
<parent>
  
<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.0</version>
    <relativePath/>
</parent>
<!-- 子模块 -->
<modules>
    
</modules>创建通用模块
使用Dubbo时,服务的生产者和消费者都要引入服务接口,所以我 们构建一个通用模块,在通用模块中存放Dubbo服务接口,服务的生产者和消费者都会引用该模块。除了服务接口,我们还会存放一 些实体类、工具类等通用功能,每个模块都会引用通用模块。
1、创建名为 shopping_common 的 SpringBoot工程,添加相关依赖。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <!-- MyBatisPlus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-bootstarter</artifactId>
        <version>3.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>2、设置该工程的父工程为 shopping 。
<parent>
    <groupId>com.ittxc</groupId>
    <artifactId>shopping</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>3、给 shopping 工程设置通用子模块
<!-- 子模块 -->
<modules>
    <!-- 通用模块,包含实体类、服务接口、工具类等-->
    <module>shopping_common</module>
</modules>4、创建pojo文件夹,编写实体类。
5、创建名为baizhanshopping的数据库,将数据库脚本导入mysql 中。
6、在通用模块添加 service 包存放服务接口,添加 util 包存放工具类。
创建商品服务模块
接下来我们编写整个项目的第一个功能:分页查询品牌列表。品牌和商品有关,所以品牌管理的代码写在商品服务模块中。首先创建商品服务模块。
1、创建名为 shopping_goods_service 的SpringBoot工程,添加相关依赖。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- MyBatisPlus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.0</version>
    </dependency>
    <!-- mysql驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- 主工程 -->
    <dependency>
        <groupId>com.itbaizhan</groupId>
        <artifactId>shopping_common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <!-- dubbo -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.8</version>
    </dependency>
    <!-- 操作zookeeper -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>2、设置该工程的父工程为 shopping 。
<parent>
    <groupId>com.ittxc</groupId>
    <artifactId>shopping</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>3、给 shopping 工程设置子模块
<!-- 子模块 -->
<modules>
    <!-- 通用模块,包含实体类、服务接口、工具类等-->
    <module>shopping_common</module>
    <!-- 商品服务 -->
    <module>shopping_goods_service</module>
</modules>4、编写配置文件 application.yml
# 端口号
server:
 port: 9001
# 日志格式
logging:
 pattern:
   console: '%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
# 配置Mybatis-plus
mybatis-plus:
 global-config:
   db-config:
      # 表名前缀
     table-prefix: bz_
      # 主键生成策略为自增
     id-type: auto
 configuration:
    # 关闭列名自动驼峰命名映射规则
   map-underscore-to-camel-case: false
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启sql日志
spring:
  # 数据源
 datasource:
   driver-class-name: com.mysql.cj.jdbc.Driver
   url: jdbc:mysql:///baizhanshopping?serverTimezone=UTC
   username: root
   password: root
dubbo:
 application:
   name: shopping_goods_service # 项目名
 registry:
   address: zookeeper://192.168.0.159 #注册中心地址
   port: 2181 # 注册中心端口号
   timeout: 10000 # 注册到zk上超市时间,ms
 protocol:
   name: dubbo # dubbo使用的协议
   port: -1 # 自动分配端口
 scan:
   base-packages: com.itbaizhan.shopping_goods_service.service # 包扫描编写根据id查询品牌功能
接下来我们在商品服务模块编写根据id查询品牌的代码
1、创建品牌 Mapper 接口
public interface BrandMapper extends BaseMapper<Brand> { }2、配置启动类扫描 MyBatis-Plus 接口
@SpringBootApplication
@MapperScan("com.ittxc.shopping_goods_service.mapper")
public class ShoppingGoodsServiceApplication {
    public static void main(String[] args)
{
      
SpringApplication.run(ShoppingGoodsServiceApplication.class, args);
   }
}3、在通用模块添加品牌服务接口
/**
* 品牌服务
*/
public interface BrandService {
    Brand findById(Long id);
}4、在商品服务模块创建品牌服务接口实现类
@DubboService
@Transactional
public class BrandServiceImpl implements BrandService {
    @Autowired
    private BrandMapper brandMapper;
    /**
     * 根据id查询品牌
     * @param id
     * @return
     */
    @Override
    public Brand findById(Long id) {
        return brandMapper.selectById(id);
   }
}创建网站后台API模块
API指预先定义的HTTP接口。在前后端分离项目中,前后端开发人员对一个控制器的访问路径、参数、返回值进行约定。后端人员编 写控制器时,根据约定查询并返回前端人员需要的数据。
万达商城分为网站前台和网站后台,网站前台是用户访问的,可以查询商品、购买商品;网站后台是管理员访问的,可以维护商品。 由于网站后台的访问量有限,我们将网站后台的所有控制器都放入 后台的API模块。前端项目访问该模块的控制器,控制器返回json数 据给前端。后台的API模块并不能查询数据,它只是dubbo服务的消费者,需要连接dubbo服务的提供者才能查询到数据。
 
 
1、创建名为 shopping_manager_api 的SpringBoot工程,添加相关依赖。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- dubbo -->
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>2.7.8</version>
    </dependency>
    <!-- 操作zookeeper -->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.2.0</version>
    </dependency>
    <dependency>
        <groupId>com.ittxc</groupId>
        <artifactId>shopping_common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
2、设置该工程的父工程为 shopping 。
<parent>
    <groupId>com.ittxc</groupId>
    <artifactId>shopping</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>3、给 shopping 工程设置Mapper子模块
<!-- 子模块 -->
<modules>
    <!-- 管理员管理网站操作的api -->
    <module>shopping_manager_api</module>
</modules>4、编写配置文件 application.yml
# 端口号
server:
 port: 8001
# 日志格式
logging:
 pattern:
   console: '%d{HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n'
dubbo:
   application:
   name: shopping_manager_api # 项目名
 registry:
   address: zookeeper://192.168.25.100 #注册中心地址
   port: 2181       # 注册中心的端口
   timeout: 10000 # 注册到zk上超时时间,ms
 protocol:
   name: dubbo # dubbo使用的协议
   port: -1 # dubbo自动分配端口编写根据id查询品牌控制器
1、启动类忽略数据源自动配置
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class ShoppingGoodsManagerApiApplication {
    public static void main(String[] args)
   {
      
        SpringApplication.run(ShoppingGoodsManagerApiApplication.class, args);
   }
}
2、编写控制器,返回JSON数据
@RestController
@RequestMapping("/brand")
public class BrandController {
    // 远程注入
    @DubboReference
    private BrandService brandService;
    @GetMapping("/findById")
    public Brand findById(Long id){
        Brand brand = brandService.findById(id);
        return brand;
   }
}3、启动商品API模块,访问 http://localhost:8001/brand/findById? id=1,查看数据。
配置IDEA忽略文件显示
在IDEA项目栏中会显示很多和开发无关的文件,我们可以通过配置 隐藏这些文件:
File->Settings->Editor->File Types->Ignore Files and Folders
*.md;*.gitignore;.mvn;.idea;








![[electron] 一 vue3.2+vite+electron 项目集成](https://img-blog.csdnimg.cn/img_convert/42d60f2743ddda0c48ef077e9632bd49.png)











