专栏:高并发项目
👏作者简介:大家好,我是小童,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;