尚筹网项目 八前台 环境搭建
Posted 黑桃️
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尚筹网项目 八前台 环境搭建相关的知识,希望对你有一定的参考价值。
环境搭建
一、会员系统架构
(1) 架构图
(2) 需要创建的工程
父工程、聚合工程:atcrowdfunding07-member-parent(唯一的 pom 工程)
注册中心:atcrowdfunding08-member-eureka
实体类模块:atcrowdfunding09-member-entity
mysql 数据服务:atcrowdfunding10-member-mysql-provider
Redis 数据服务:atcrowdfunding11-member-redis-provider
会员中心:atcrowdfunding12-member-authentication-consumer
项目维护:atcrowdfunding13-member-project-consumer
订单维护:atcrowdfunding14-member-order-consumer
支付功能:atcrowdfunding15-member-pay-consumer
网关:atcrowdfunding16-member-zuul
API 模块:atcrowdfunding17-member-api
二、parent 工程配置 pom.xml
<!-- 配置在父工程中要管理的依赖 -->
<dependencyManagement>
<dependencies>
<!-- 导入 SpringCloud 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<!-- import 依赖范围表示将 spring-cloud-dependencies 包中的依赖信息导入 -->
<scope>import</scope>
</dependency>
<!-- 导入 SpringBoot 需要使用的依赖信息 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.5</version>
</dependency>
</dependencies>
</dependencyManagement>
三、搭建环境约定
(1) 包名约定
新创建的包都作为 com.atguigu.crowd 的子包
(2) 主启动类类名
CrowdMainClass
(3) 端口号
atcrowdfunding08-member-eureka 1000
atcrowdfunding10-member-mysql-provider 2000
atcrowdfunding11-member-redis-provider 3000
atcrowdfunding12-member-authentication-consumer 4000
atcrowdfunding13-member-project-consumer 5000
atcrowdfunding14-member-order-consumer 7000
atcrowdfunding15-member-pay-consumer 8000
atcrowdfunding16-member-zuul 80
四、eureka 工程
(1) 导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
(2) 主启动类
// 启动eureka注册中心
@EnableEurekaServer
@SpringBootApplication
public class CrowdMainClass
public static void main(String[] args)
SpringApplication.run(CrowdMainClass.class,args);
(3) application.yml
server:
port: 1000 # eureka端口号
spring:
application:
name: atguigu-crowd-eureka # 应用名称,将会显示在Eureka界面的应用名称列
eureka:
instance:
hostname: localhost # 应用实例主机名
client:
register-with-eureka: false # 不像注册中心注册自己
fetch-registry: false # 不从eureka获取注册信息
service-url:
defaultZone: http://$eureka.instance.hostname:$server.port/eureka/ # Eureka服务器的地址
五、entity 工程
(1) 实体类的进一步细分
VO
View Object 视图对象
用途 1:接收浏览器发送过来的数据
用途 2:把数据发送给浏览器去显示
PO
Persistent Object 持久化对象
用途 1:将数据封装到 PO 对象存入数据库
用途 2:将数据库数据查询出来存入 PO 对象
所以 PO 对象是和数据库表对应,一个数据库表对应一个 PO 对象
DO
Data Object 数据对象
用途 1:从 Redis 查询得到数据封装为 DO 对象
用途 2:从 ElasticSearch 查询得到数据封装为 DO 对象
用途 3:从 Solr 查询得到数据封装为 DO 对象
……
从中间件或其他第三方接口查询到的数据封装为 DO 对象
DTO
Data Transfer Object 数据传输对象
用途 1:从 Consumer 发送数据到 Provider
用途 2:Provider 返回数据给 Consumer
使用 org.springframework.beans.BeanUtils.copyProperties(Object, Object)在不同实体类之间复制属性。
MemberVO → 复制属性 → MemberPO
(2) 创建包
com.atguigu.crowd.entity.po
com.atguigu.crowd.entity.vo
(3) lombok
让我们在开发时不必编写 getXxx()、setXxx()、有参构造器、无参构造器等等这样具备固定模式的代码。
原理:
六、MySQL 工程基础环境
(1) 创建数据库表
CREATE TABLE t_member (
id INT ( 11 ) NOT NULL auto_increment,
loginacct VARCHAR ( 255 ) NOT NULL,
userpswd CHAR ( 200 ) NOT NULL,
username VARCHAR ( 255 ),
email VARCHAR ( 255 ),
authstatus INT ( 4 ) COMMENT '实名认证状态 0 - 未实名认证, 1 - 实名认证申
请中, 2 - 已实名认证',
usertype INT ( 4 ) COMMENT ' 0 - 个人, 1 - 企业',
realname VARCHAR ( 255 ),
cardnum VARCHAR ( 255 ),
accttype INT ( 4 ) COMMENT '0 - 企业, 1 - 个体, 2 - 个人, 3 - 政府',
PRIMARY KEY ( id )
);
(2) 逆向生成
逆向工程生成的文件归位
(3) 依赖
mysql-provider的 pom.xml 中导入依赖
<!-- 整合 MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!-- SpringBoot 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 对外暴露服务 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 作为客户端访问 Eureka 注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 为了能够使用实体类 -->
<dependency>
<groupId>com.atguigu.crowd</groupId>
<artifactId>atcrowdfunding09-member-entity</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- 为了能够使用工具类 -->
<dependency>
<groupId>com.atguigu.crowd</groupId>
<artifactId>atcrowdfunding05-common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
(4) 创建主启动类
// 扫描mybatis 的 Mapper接口 所在包
@MapperScan("com/atguigu/crowd/mapper")
@SpringBootApplication
public class CrowdMainClass
public static void main(String[] args)
SpringApplication.run(CrowdMainClass.class,args);
(5) application.yml
server:
port: 2000
spring:
application:
name: atguigu-crowd-mysql
datasource:
name: mydb
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3307/project_crowd?serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
eureka:
client:
service-url:
defaultZone: http://localhost:1000/eureka
mybatis:
mapper-locations: classpath*:/mybatis/mapper/*Mapper.xml
ogging:
level:
com.atguigu.crowd.mapper: debug
com.atguigu.crowd.test: debug
(6) 测试类
// 有@RunWith(SpringRunner.class)才能使用@Autowired注入的类,否则自动注入不生效
@RunWith(SpringRunner.class)
@SpringBootTest
public class MyBatisTest
@Autowired
private DataSource dataSource;
@Resource
private MemberPOMapper memberPOMapper;
// 日志
private Logger logger = LoggerFactory.getLogger(MyBatisTest.class);
// 测试向数据库中插入一个信息
@Test
public void testMapper()
// 盐值加密
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 明文
String source = "123456";
// 密文
String encode = passwordEncoder.encode(source);
MemberPO memberPO = new MemberPO(null,"ht",encode,"黑桃","ht@qq.com",1,1,"黑桃","123123",2);
memberPOMapper.insertSelective(memberPO);
// 测试与数据库的连接是否成功
@Test
public void testConnection() throws SQLException
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 在日志中打印连接信息
logger.info("connection的内容: " + connection.toString());
七、MySQL 工程对外暴露服
(1) api 工程
① 导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.crowd</groupId>
<artifactId>atcrowdfunding09-member-entity</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.atguigu.crowd</groupId>
<artifactId>atcrowdfunding05-common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
② 创建接口
@FeignClient("atguigu-crowd-mysql")
public interface MySQLRemoteService
@RequestMapping("/get/memberpo/by/login/acct/remote")
ResultEntity<MemberPO> getMemberPOByLoginAcctRemote(@RequestParam("loginacct") String loginacct);
(2) MySQL 工程
① 创建组件
② MemberProviderHandler
@RestController
public class MemberProviderHandler
@Autowired
MemberService memberService;
@RequestMapping("/get/memberpo/by/login/acct/remote")
public ResultEntity<MemberPO> getMemberPOByLoginAcct(@RequestParam("loginacct") String loginacct)
try
MemberPO memberPO = memberService.getMemberPOByLoginAcct(loginacct);
// 执行成功,返回数据
return ResultEntity.successWithData(memberPO);
catch (Exception e)
// 执行失败,返回错误信息
return ResultEntity.failed(e.getMessage());
③ MemberService
public interface MemberService
MemberPO getMemberPOByLoginAcct(String loginacct);
④ MemberServiceImpl
// 在类上使用@Transactional(readOnly = true)针对查询操作设置事务属性
@Transactional(readOnly = true)
@Service
public class MemberServiceImpl implements MemberService
@Resource
private MemberPOMapper memberPOMapper;
@Override
public MemberPO getMemberPOByLoginAcct(String loginacct)
// 创建 example 对象
MemberPOExample example = new MemberPOExample();
// 创建 criteria 对象
Criteria criteria = example.createCriteria();
// 封装查询条件
criteria.andLoginacctEqualTo(loginacct);
// 执行查询
List<MemberPO> memberPOS = memberPOMapper.selectByExample(example);
return memberPOS.get(0);
八、Redis 工程基础环境
(1) 依赖
<!-- 整合 Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 对外暴露服务 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 作为客户端访问 Eureka 注册中心 -->
<dependency以上是关于尚筹网项目 八前台 环境搭建的主要内容,如果未能解决你的问题,请参考以下文章
尚筹网项目 十 前台 会员登录 及使用 SpringSession 实现 Session共享
项目一众筹网02_1_此次项目的重要性环境搭建-创建常量类管理员登录功能开始表单都是以post方式去提交我们说的控制器就是handlerbase标签的位置实现点击浏览器的上一步