springcloud alibaba(二)基础模块与微服务搭建
创建基础模块
上一篇搭建了父工程和依赖坐标的锁定, 接下来就开始创建基础模块
简述:
maven:3.6.2
数据库:MySQL 5.1.6
持久层: SpingData Jpa (创建了表名后,启动项目可以根据实体创建对应的表,某些时候这个还是比较方便的。但国内大部分企业偏爱Mybatis,根据自己的需要选择即可),在网上看了一个例子感觉挺好,这里也借鉴一下。
创建基础模块
1: 创建shop-common 公共模块
在父工程上右击鼠标 New -> Module



shop-common 的 pom依赖坐标
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-alibaba</artifactId>
<groupId>com.java</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-common</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
</project>
/**
* 用户实体类
*/
@Entity(name = "shop_user") //实体与表映射
/*
* lombok 的使用
* 1> pom.xml引入lombok的依赖;
* 2> idea中安装lombok插件;
* 说明: lombok是阿三哥他们家开发的
*/
@Data //源于lombok, 编译时自动创建getter/setter方法
@NoArgsConstructor //补充一下, 源于lombok, 这个是无参构造方法
@AllArgsConstructor //补充一下,源于lombok,这个是全参构造方法
public class User {
@Id //表示主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //逐渐增长策略
private Long uid;//主键
private String username;//用户名
private String password;//密码
private String telephone;//手机号
}
/**
* 商品实体类
*/
@Entity(name = "shop_product")
/*
* lombok 的使用
* 1> pom.xml引入lombok的依赖;
* 2> idea中安装lombok插件;
* 说明: lombok是阿三哥他们家开发的
*/
@Data //源于lombok, 编译时自动创建getter/setter方法
@NoArgsConstructor //补充一下, 源于lombok, 这个是无参构造方法
@AllArgsConstructor //补充一下,源于lombok,这个是全参构造方法
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer pid;//主键
private String pname;//商品名称
private Double pprice;//商品价格
private Integer stock;//库存
}
/**
* 订单实体类
*/
@Entity(name = "shop_order")
/*
* lombok 的使用
* 1> pom.xml引入lombok的依赖;
* 2> idea中安装lombok插件;
* 说明: lombok是阿三哥他们家开发的
*/
@Data //源于lombok, 编译时自动创建getter/setter方法
@NoArgsConstructor //补充一下, 源于lombok, 这个是无参构造方法
@AllArgsConstructor //补充一下,源于lombok,这个是全参构造方法
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long oid;//订单id
private Long uid;//用户id
private String username;//用户名
private Long pid;//商品id
private String pname;//商品名称
private Double pprice;//商品单价
private Integer number;//购买数量
}
2: 创建shop-user 用户微服
1>创建用户微服务,步骤跟创建shop-common模块一样, 只是名字不一样,用户微服务的名称是shop-user
2>pom.xml文件依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-alibaba</artifactId>
<groupId>com.java</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-user</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- 引入公共模块 -->
<dependency>
<groupId>com.java</groupId>
<artifactId>shop-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 因为是用户微服务,这里简单提一下, 所以要引入web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2>按下面截图创建包和类

3>主类内容
package com.goblin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
4>持久层UserDao接口
package com.goblin.dao;
import com.goblin.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
//JpaRepository是一个泛型接口, 前面的表示用户实体, 后面的是实体主键ID属性
public interface UserDao extends JpaRepository<User, Long> {
}
5>业务接口
package com.goblin.service;
import com.goblin.entity.User;
/**
* 用户业务接口
*/
public interface UserService {
/**
* 通过用户id查询用户信息
*
* @param id
* @return
*/
User getByUid(Long id);
}
6>业务实现类
package com.goblin.service.impl;
import com.goblin.dao.UserDao;
import com.goblin.entity.User;
import com.goblin.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 用户业务实现类
*/
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
/**
* 通过用户id查询用户信息
*
* @param id
* @return
*/
@Override
public User getByUid(Long id) {
return userDao.findById(id).get();
}
}
7>前端控制器
package com.goblin.controller;
import com.goblin.entity.User;
import com.goblin.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 用户控制器
*/
@RestController //它= @Controller + @ResponseBody, 点开它也能看到这两个注解在它里面哦
//@RequestMapping("/user") //这里可以加一层映射, 也可以不加, 具体看实战需要情况
public class UserController {
@Resource
private UserService userService;
/**
* 通过用户id查询用户信息
*
* @param uid
* @return
*/
@GetMapping("/user/{uid}")//这种是rest风格调用接口的方式哈,参数在路径中,通过@PathVariable获取
public User getByUid(@PathVariable Long uid) {
return userService.getByUid(uid);
}
}
8>配置application.yml
server:
port: 8071
spring:
application:
name: service-user
datasource:
driver-class-name: com.mysql.jdbc.Driver
# 这里提一句, 下面的 /// 等同于 localhost:3306 or 127.0.0.1:3306, 如果是其他IP和端口号的话,这里需要写全
# jdbc:mysql://ip:port/dbName?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
url: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
9>数据库数据初始化用户信息的sql脚本如下:
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (1, '123456', '19276789875', '张三');
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (2, '123456', '19276789875', '李四');
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (3, '123456', '19276789875', '王五');
10> 运行主类UserApplication.java中的main方法,输入路径和参数: http://localhost:8071/user/1

3: 创建shop-product产品微服务
按照shop-user的创建步骤创建shop-product微服务, 注意的是有2个地方, 在application.yml中端口和应用名称不一样, 其他都一样, 而在product产品微服务中, 端口是8081, 应用名称service-product
数据库数据初始化产品信息的sql脚本如下:
INSERT INTO shop_product VALUE(NULL,'小米','1000','5000');
INSERT INTO shop_product VALUE(NULL,'华为','2000','5000');
INSERT INTO shop_product VALUE(NULL,'苹果','3000','5000');
INSERT INTO shop_product VALUE(NULL,'OPPO','4000','5000');
4: 创建shop-order订单
按照shop-user的创建步骤创建shop-order微服务, 注意的是有2个地方, 在application.yml中端口和应用名称不一样, 其他都一样, 而在order产品微服务中, 端口是8091, 应用名称service-order
总结
本文介绍了如何创建基础模块, 用户模块, 产品模块和订单模块, 这些基本上全是创建SpringBoot项目相关的东西。
更多推荐
所有评论(0)