网站开发所需配置,商业空间设计方案,徐州市建设局交易网站,网站访客统计代码文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖#xff08;刷新#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创… 文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖刷新5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创建启动类测试7.测试执行1.发现80端口被占用2.打开命令行输入 netstat -anb 查看是谁占用了80端口3.只能更换端口使用 netstat -aon | findstr :81 来查看81端口被没被占用4.application.yml 更换端口和名字为815.再次测试运行成功在81端口监听6.浏览器请求测试7.更换项目名称为81这样直接就知道这个服务在81端口监听 8.细节说明1.如果报错说数据库有问题可能就是在pom.xml中保留了mybatis的依赖2.解决方案启动类排除数据源自动配置 3.代码实现1.com/sun/springcloud/entity/Member.java 创建entity与会员中心模块保持一致2.com/sun/springcloud/util/Result.java 创建Result工具类3.RestTemplate 基本介绍4.com/sun/springcloud/config/CustomizationBean.java 配置类注入RestTemplate的bean对象5.com/sun/springcloud/controller/MemberConsumerController.java 作为会员中心微服务 save接口的中转站6.启动两个微服务进行测试1.首先启动会员中心微服务2.启动服务消费微服务3.postman测试4.数据库信息 7.注意事项1.RestTemplate发送请求的细节2.entity实体类需要实现Serializable接口实现可序列化3.在这个案例中 8.com/sun/springcloud/controller/MemberConsumerController.java 新增方法9.postman测试10.注意事项和细节1.开启Run Dashboard/Service1.打开 .idea/workspace.xml2.粘贴配置代码到这里3.配置代码4.重启项目5.查看Services6.可以在这启动项目7.启动之后的效果 2.关于微服务的细节1.对微服务的理解2.每个微服务接口的组成 4.创建一个共用模块1.创建公共模块 e_commerce_center-common-api2.检查父子的pom.xml1.子pom.xml2.父pom.xml 3.pom.xml 引入依赖刷新4.抽取共用api5.maven打成jar包6.target目录生成jar包7.package和install的区别部署项目的时候打包使用package8.工程重构1.删除两个模块的Member和Result类此时会报错2.两个模块的pom.xml都引入刚才的jar包1.查找公共模块jar包的坐标2.pom.xml分别引入jar包 3.重启两个模块进行测试1.重启2.测试 1.示意图 2.环境搭建
1.创建会员消费微服务模块 2.删除不必要的两个文件 3.检查父子模块的pom.xml文件
1.子模块 2.父模块 4.pom.xml 添加依赖刷新 dependencies!-- springboot web starter 用来监听端口--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!-- 如果在子工程/模块指定了 version则以指定为准 --/dependency!--1. starter-actuator 是 springboot 程序的监控系统可以实现健康检查info 信息等2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. --!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!-- lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!-- test --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies5.application.yml 配置监听端口和服务名
server:port: 80 # 监听80端口
spring:application:name: member-service-consumer-806.com/sun/springcloud/MemberConsumerApplication.java 创建启动类测试
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description:** Author sun* Create 2024/3/24 13:58* Version 1.0*/
SpringBootApplication
public class MemberConsumerApplication {public static void main(String[] args) {SpringApplication.run(MemberConsumerApplication.class, args);}
}
7.测试执行
1.发现80端口被占用 2.打开命令行输入 netstat -anb 查看是谁占用了80端口 3.只能更换端口使用 netstat -aon | findstr :81 来查看81端口被没被占用
没有响应说明没有被占用 4.application.yml 更换端口和名字为81
server:port: 81 # 监听81端口
spring:application:name: member-service-consumer-815.再次测试运行成功在81端口监听 6.浏览器请求测试 7.更换项目名称为81这样直接就知道这个服务在81端口监听 8.细节说明
1.如果报错说数据库有问题可能就是在pom.xml中保留了mybatis的依赖 2.解决方案启动类排除数据源自动配置 3.代码实现
1.com/sun/springcloud/entity/Member.java 创建entity与会员中心模块保持一致
因为需要使用这个实体类来接收信息然后调用会员中心模块
package com.sun.springcloud.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;/*** Description:** Author sun* Create 2024/3/24 14:21* Version 1.0*/
AllArgsConstructor
NoArgsConstructor
Data
//Serializable 加上后面可能使用
public class Member implements Serializable {private Long id;private String name;private String pwd;private String mobile;private String email;private Integer gender;
}
2.com/sun/springcloud/util/Result.java 创建Result工具类
package com.sun.springcloud.util;/*** Description:** Author sun* Create 2024/3/24 14:21* Version 1.0*/
public class ResultT {private String code;private String msg;private T data;public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public T getData() {return data;}public void setData(T data) {this.data data;}public Result() {}public Result(T data) {this.data data;}public static Result success() {Result result new Result();result.setCode(200);result.setMsg(success);return result;}public static T ResultT success(T data) {ResultT result new Result(data);result.setCode(200);result.setMsg(success);return result;}public static T ResultT success(String msg, T data) {ResultT result new Result(data);result.setCode(200);result.setMsg(msg);return result;}public static Result error(String code, String msg) {Result result new Result();result.setCode(code);result.setMsg(msg);return result;}public static T ResultT error(String code, String msg, T data) {ResultT result new Result(data);result.setCode(code);result.setMsg(msg);return result;}}
3.RestTemplate 基本介绍 4.com/sun/springcloud/config/CustomizationBean.java 配置类注入RestTemplate的bean对象
package com.sun.springcloud.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** Description: 配置类** Author sun* Create 2024/3/24 14:32* Version 1.0*/
Configuration
public class CustomizationBean {/*** 注入RestTemplate的bean对象* return*/Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}
5.com/sun/springcloud/controller/MemberConsumerController.java 作为会员中心微服务 save接口的中转站
package com.sun.springcloud.controller;import com.sun.springcloud.entity.Member;
import com.sun.springcloud.util.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;/*** Description: 作为会员中心微服务对member表操作的网关** Author sun* Create 2024/3/24 14:42* Version 1.0*/
RestController
public class MemberConsumerController {/*访问会员中心微服务的前缀*/public static final String MEMBER_SERVICE_PROVIDER_URL http://localhost:10001;/*注入微服务之间通讯的RestTemplate的bean对象*/Resourceprivate RestTemplate restTemplate;/*** 向会员中心微服务的save接口发送请求携带member对象接受返回的结果Result并以json的格式返回给浏览器** param member 这里的参数必须是表单类型的因为没有加requestBody* return*/PostMapping(/member/consumer/save)public Result save(Member member) {// 注意使用restTemplate发送请求时会将member转化为json格式的数据然后再发送请求所以会员中心微服务的save接口必须加requestBody注解return restTemplate.postForObject(MEMBER_SERVICE_PROVIDER_URL /member/save, member, Result.class);}}
6.启动两个微服务进行测试
1.首先启动会员中心微服务 2.启动服务消费微服务 3.postman测试 4.数据库信息 7.注意事项
1.RestTemplate发送请求的细节
通过RestTemplate发送请求携带的参数会自动转换为json格式的数据所以在接受RestTemplate的参数中必须要加RequestBody注解
2.entity实体类需要实现Serializable接口实现可序列化
原因是使用RestTemplate传递参数时可能需要序列化
3.在这个案例中
参数并没有RequestBody注解所以需要通过表单传入数据
8.com/sun/springcloud/controller/MemberConsumerController.java 新增方法 /*** 接受id为路径参数向会员中心微服务模块的getMemberById接口发送请求根据id获取信息** param id 请求参数* return 根据id返回json类型的数据*/GetMapping(/member/consumer/get/{id}) // 这里使用的路径参数public Result getMemberById(PathVariable(id) Long id) {return restTemplate.getForObject(MEMBER_SERVICE_PROVIDER_URL /member/get/ id, Result.class);}9.postman测试 10.注意事项和细节
1.开启Run Dashboard/Service
1.打开 .idea/workspace.xml 2.粘贴配置代码到这里 3.配置代码 component nameRunDashboardoption nameconfigurationTypessetoption valueSpringBootApplicationConfigurationType //set/optionoption nameruleStateslistRuleStateoption namename valueConfigurationTypeDashboardGroupingRule //RuleStateRuleStateoption namename valueStatusDashboardGroupingRule //RuleState/list/option/component4.重启项目 5.查看Services 6.可以在这启动项目 7.启动之后的效果 2.关于微服务的细节
1.对微服务的理解
一个ip端口就是一个微服务访问微服务的方式是ip 端口 上下文路径可以是根目录 资源路径
2.每个微服务接口的组成
url请求方式参数返回值
4.创建一个共用模块
1.创建公共模块 e_commerce_center-common-api 2.检查父子的pom.xml
1.子pom.xml 2.父pom.xml 3.pom.xml 引入依赖刷新 dependencies!-- lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId!-- optional为true表示两个模块之间依赖不传递也就是其他模块引入这个共用模块时不传递这个模块的lombok依赖 --optionaltrue/optional/dependency/dependencies4.抽取共用api 5.maven打成jar包 6.target目录生成jar包 7.package和install的区别部署项目的时候打包使用package
package命令主要用于项目的编译和打包但不会将产物安装到本地仓库主要用于构建过程的测试和验证。install命令在执行package的基础上进一步将打包后的文件安装到本地Maven仓库便于其他项目的依赖引用。
8.工程重构
1.删除两个模块的Member和Result类此时会报错 2.两个模块的pom.xml都引入刚才的jar包
1.查找公共模块jar包的坐标 2.pom.xml分别引入jar包 !-- 公共模块的jar包 --dependencygroupIdorg.example/groupIdartifactIde_commerce_center-common-api/artifactIdversion1.0-SNAPSHOT/version/dependency3.重启两个模块进行测试
1.重启 2.测试