专栏:高并发项目
👏作者简介:大家好,我是小童,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: autoconfiguration:# 关闭列名自动驼峰命名映射规则map-underscore-to-camel-case: falselog-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启sql日志
spring:# 数据源datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///baizhanshopping?serverTimezone=UTCusername: rootpassword: root
dubbo:application:name: shopping_goods_service # 项目名registry:address: zookeeper://192.168.0.159 #注册中心地址port: 2181 # 注册中心端口号timeout: 10000 # 注册到zk上超市时间,msprotocol: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 {@Autowiredprivate BrandMapper brandMapper;/*** 根据id查询品牌* @param id* @return*/@Overridepublic 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上超时时间,msprotocol: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 {// 远程注入@DubboReferenceprivate 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;