龙口网站建设哪家专业,淘客推广怎么做,高新手机网站建设价格,wordpress微信分享没有缩略图微服务框架搭建 (一)、SpringCloud-Parent1.创建一个SpringBoot项目2.导入我们的依赖 (二)、SpringCloud-API (实体类)1.创建一个SpringBoot项目2.导入我们的依赖3.创建我们的实体类 (三)、SpringCloud-dept (业务A)1.创建一个SpringBoot项目2.导入我们的依赖3.配置我们的配置信… 微服务框架搭建 (一)、SpringCloud-Parent1.创建一个SpringBoot项目2.导入我们的依赖 (二)、SpringCloud-API (实体类)1.创建一个SpringBoot项目2.导入我们的依赖3.创建我们的实体类 (三)、SpringCloud-dept (业务A)1.创建一个SpringBoot项目2.导入我们的依赖3.配置我们的配置信息4.配置我们的MVC框架(1).Dao层和XML(2).server和serverImpl(3).controller 5.测试(1).测试查询(2).测试添加(3).查询全部 (四)、SpringCloud-counsmer (用户)1.创建一个SpringBoot项目2.导入我们的依赖3.配置我们的配置信息4.配置我们的MVC框架(1).controller 5.测试(1).查询全部(2).测试添加(3).测试查找 (五)、⭐配置Eureka注册中心 (服务端)⭐1.创建一个SpringBoot项目2.导入我们的依赖3.配置我们的配置信息4.添加注册中心注解5.测试 (六)、SpringCloud-Provider (服务提供者)1.创建一个SpringBoot项目2.导入我们的依赖3.配置我们的配置信息4.向注册中心注册服务5.测试 (七)、SpringCloud-Provider (服务提供者完整版)1.导入我们的依赖2.配置我们的配置文件3.配置我们的MVC三层框架(1).dao层和mapper的配置(2).server和serverImpl的配置(3).controller的配置 4.向注册中心注册服务 (八)、SpringCloud-Consumer (消费者-完整版)1.导入我们的依赖2.配置我们的配置文件3.配置我们的MVC框架4.向注册中心注册服务5.测试 (一)、SpringCloud-Parent
1.创建一个SpringBoot项目
然后只保留这四个文件
2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1.⭐ 这个是后面我们有多少子项目然后都写在这里进行统一管理。 --modulesmoduledemo01/modulemoduledemo02/module/modules!--2.⭐ 这个是我们本父类的三大件 --groupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/versionnameSpringCloundTest/namedescriptionSpringCloud-parent/description!--3.⭐ 进行统一管理我们的版本信息 --propertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetjunit.version4.12/junit.versionlog4j.version1.2.17/log4j.versionlombok.version1.16.18/lombok.version/properties!--4. ⭐ 更改打包方式--packagingpom/packaging!--5. 使用依赖管理--dependencyManagement!--6. ⭐创建依赖项--dependencies!-- SpringCloud 的依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversionHoxton.SR8/versiontypepom/typescopeimport/scope/dependency!-- SpringBoot 的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.3.3.RELEASE/versiontypepom/typescopeimport/scope/dependency!-- MySql 数据库--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.6/version/dependency!-- 导入德鲁伊数据源 --dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.10/version/dependency!--SpringBoot 启动器--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version/dependency!--日志测试~--dependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactIdversion1.2.3/version/dependency!--junit--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version/dependency!-- log4j--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion${log4j.version}/version/dependency!-- lombok --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependency/dependencies/dependencyManagement
/project(二)、SpringCloud-API (实体类)
这里的API相当于是我们实体类实体类全部放在这!!! 实体类不需要启动类和测试类所以我们需要把这个实体类的启动类给手动删除。
1.创建一个SpringBoot项目 2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1. ⭐指定他的父亲 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2. ⭐三件套 --groupIdcom.jsxs/groupIdartifactIddemo01/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo01/namedescriptionDemo project for Spring Boot/description!--3. ⭐指定版本 --propertiesjava.version1.8/java.version/properties!--4. ⭐依赖性 --dependenciesdependencygroupIdlog4j/groupIdartifactIdlog4j/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.创建我们的实体类
package com.jsxs.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;import java.io.Serializable;/*** Author Jsxs* Date 2023/10/15 19:08* PackageName:com.jsxs.pojo* ClassName: Dept* Description: TODO* Version 1.0*/Data
NoArgsConstructor
AllArgsConstructor
Accessors(chain true) //目的是为了打开链式写法
public class Dept implements Serializable { // 实体类在网络通信的时候一定要进行序列化否则会报错 ORM关系private Long deptno; // 主键private String dname; //部门的名字// 这里的数据存在哪个数据库里面。微服务: 一个服务对应一个数据库同一个信息可能存在不同的数据库中。private String db_source;
}
(三)、SpringCloud-dept (业务A)
这里是我们的一个业务:
1.创建一个SpringBoot项目 2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1.⭐指定我们的父类 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2.⭐三件套 --groupIdcom.jsxs/groupIdartifactIddemo02/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo02/namedescriptionDemo project for Spring Boot/description!--4.⭐版本控制 --propertiesjava.version1.8/java.version/properties!--5.⭐依赖 --dependencies!--6.⭐⭐ 引入我们的实体类数据-》API --dependencygroupIdcom.jsxs/groupIdartifactIddemo01/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactId/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency!-- test--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactId/dependency!-- jetty--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId/dependency!-- 热部署工具--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies
/project3.配置我们的配置信息
server:port: 8081
# Mybatis的配置
mybatis:type-aliases-package: com.jsxs.pojo # 起别名mapper-locations: classpath:mybatis/mapper/*.xml # 路径配置# Spring的配置
spring:application:name: SpringCloud-provider-deptdatasource:url: jdbc:mysql://localhost:3306/db01?useUnicodetruecharacterEncodingutf-8username: rootpassword: 121788driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource4.配置我们的MVC框架
(1).Dao层和XML
com/jsxs/dao/DeptDao.java
package com.jsxs.dao;import com.jsxs.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:29* PackageName:com.jsxs.dao* ClassName: DeptDao* Description: TODO* Version 1.0*/
Mapper
Repository
public interface DeptDao {public boolean addDept(Dept dept);public Dept queryById(Long id);public ListDept all();
}mybatis/mapper/DeptMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd!-- 1. 我们首先要绑定工作空间--
mapper namespacecom.jsxs.dao.DeptDao!-- 2. 我们编写SQL语句 --insert idaddDept parameterTypecom.jsxs.pojo.Deptinsert into dept(deptno,dname,db_source)values(#{deptno},#{dname},DATABASE())/insertselect idqueryById resultTypecom.jsxs.pojo.Dept parameterTypeLongselect *from dept where deptno#{id}/selectselect idall resultTypecom.jsxs.pojo.Deptselect *from dept/select
/mapper
(2).server和serverImpl
com/jsxs/service/DeptService.java
package com.jsxs.service;import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Service;import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:56* PackageName:com.jsxs.dao.service* ClassName: DeptService* Description: TODO* Version 1.0*/
public interface DeptService {public boolean addDept(Dept dept);public Dept queryById(Long id);public ListDept all();
}
com/jsxs/service/DeptServiceImpl.java
package com.jsxs.service;import com.jsxs.dao.DeptDao;
import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:57* PackageName:com.jsxs.dao.service* ClassName: DeptServiceImpl* Description: TODO* Version 1.0*/Service
public class DeptServiceImpl implements DeptService {Resourceprivate DeptDao deptDao;Overridepublic boolean addDept(Dept dept) {return deptDao.addDept(dept);}Overridepublic Dept queryById(Long id) {return deptDao.queryById(id);}Overridepublic ListDept all() {return deptDao.all();}
}(3).controller
com/jsxs/controller/DeptController.java
package com.jsxs.controller;import com.jsxs.pojo.Dept;
import com.jsxs.service.DeptService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:59* PackageName:com.jsxs.controller* ClassName: DeptController* Description: TODO* Version 1.0*/RestController
public class DeptController {Resourceprivate DeptService deptService;PostMapping(/dept/add)public Boolean addDept(Dept dept) {boolean flag deptService.addDept(dept);return flag;}GetMapping(/dept/queryById/{id})public Dept queryById(PathVariable(id) Long id) {Dept dept deptService.queryById(id);return dept;}GetMapping(/dept/all)public ListDept all() {ListDept all deptService.all();return all;}
}5.测试
(1).测试查询
http://localhost:8081/dept/queryById/1
(2).测试添加
http://localhost:8081/dept/add?deptno1dname李明db_sourcedb01
(3).查询全部 (四)、SpringCloud-counsmer (用户)
用户使用业务A
1.创建一个SpringBoot项目 2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1. ⭐ 引入我们的父项目 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2. ⭐本项目的三件套 --groupIdcom.jsxs/groupIdartifactIddemo03/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo03/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/properties!--3.⭐ 依赖选项 --dependencies!--1. ⭐⭐ 这个引入我们的实体类 --dependencygroupIdcom.jsxs/groupIdartifactIddemo01/artifactIdversion0.0.1-SNAPSHOT/version/dependency!-- 热部署工具--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.配置我们的配置信息
server:port: 80com/jsxs/config/ConfigBean.java 提供多种便捷访问远程 访问http服务的方法简单的Rest
package com.jsxs.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** Author Jsxs* Date 2023/10/15 21:16* PackageName:com.jsxs.config* ClassName: ConfigBean* Description: TODO* Version 1.0*/
Configuration
public class ConfigBean {// 把RestTemplate注入到Spring中去Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}4.配置我们的MVC框架
因为我们的用户层只需要控制层即可。不需要业务逻辑层什么的。
(1).controller
package com.jsxs.controller;import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 21:21* PackageName:com.jsxs.controller* ClassName: DeptConsumerController* Description: TODO* Version 1.0*/
RestController
public class DeptConsumerController {Resource// (URI url, 实体 map,ClassT responseType) 地址---- 实体 ----返回类型.classprivate RestTemplate restTemplate; // 提供多种便捷访问远程 访问http服务的方法简单的Rest// 设置服务层的前缀为常量private static final String REST_URL_PREFIX http://localhost:8081;// 根据id进行数据的查找// 用户层的这个访问路径可以随意写没有必要和服务层的路径完全一致RequestMapping(/consumer/dept/get/{id})public Dept get(PathVariable(id) Long deptno) {// 这里返回的是: 服务层的路径return restTemplate.getForObject(REST_URL_PREFIX /dept/queryById/ deptno, Dept.class);}// 添加数据RequestMapping(/consumer/dept/add)public boolean add(Dept dept) {return restTemplate.postForObject(REST_URL_PREFIX /dept/add, dept, Boolean.class);}// 查找全部数据RequestMapping(/consumer/dept/all)public ListDept all() {return restTemplate.getForObject(REST_URL_PREFIX /dept/all, List.class);}
}5.测试
启动
(1).查询全部 (2).测试添加 (3).测试查找 以上的微服务框架并未使用我们的注册中心不能说是真正的微服务框架的!!! (五)、⭐配置Eureka注册中心 (服务端)⭐
1.创建一个SpringBoot项目 2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1.⭐引入我们的父类 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2.⭐自己的三件套 --groupIdcom.jsxs/groupIdartifactIdeureka-7001/artifactIdversion0.0.1-SNAPSHOT/versionnameeureka-7001/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/properties!--3.⭐导入我们的依赖 --dependencies!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka-server/artifactIdversion1.4.6.RELEASE/version/dependency!-- 热部署工具 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactIdscopetest/scope/dependency/dependencies/project3.配置我们的配置信息
server:port: 7001eureka:instance:prefer-ip-address: truehostname: localhostclient:register-with-eureka: false # 是否将自己注册进注册中心fetch-registry: false # 是否是注册中心: 是service-url:defaultzone: http://${eureka.instance.hostname}:${server.port}/eureka/4.添加注册中心注解
package com.jsxs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;SpringBootApplication// ⭐⭐ 开启我们的Eureka服务端
EnableEurekaServerpublic class Eureka7001Application {public static void main(String[] args) {SpringApplication.run(Eureka7001Application.class, args);}}5.测试 (六)、SpringCloud-Provider (服务提供者)
1.创建一个SpringBoot项目 2.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1.引入我们的父类 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2.自己的三件套 --groupIdcom.jsxs/groupIdartifactIdeureka-provider-8001/artifactIdversion0.0.1-SNAPSHOT/versionnameeureka-provider-8001/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/properties!--3.依赖 --dependencies!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactIdversion1.4.6.RELEASE/version/dependency!-- ⭐一定要添加web的驱动要不然启动不成功!!! --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies/project3.配置我们的配置信息
server:port: 8001# Spring的配置
spring:application:name: SpringCloud-provider-dept# Eureka 服务注册到哪里?
eureka:client:service-url:defaultZone: http://localhost:7001/eureka/instance:instance-id: jsxs-014.向注册中心注册服务
package com.jsxs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;SpringBootApplicationEnableEurekaClientpublic class EurekaProvider8001Application {public static void main(String[] args) {SpringApplication.run(EurekaProvider8001Application.class, args);}}5.测试 (七)、SpringCloud-Provider (服务提供者完整版)
1.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1.⭐指定我们的父类 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2.⭐三件套 --groupIdcom.jsxs/groupIdartifactIddemo02/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo02/namedescriptionDemo project for Spring Boot/description!--4.⭐版本控制 --propertiesjava.version1.8/java.version/properties!--5.⭐依赖 --dependencies!--6.⭐⭐ 引入我们的实体类数据-》API --dependencygroupIdcom.jsxs/groupIdartifactIddemo01/artifactIdversion0.0.1-SNAPSHOT/version/dependency!-- 7. ⭐⭐⭐ eureka客户端的和监视器 --!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactIdversion1.4.6.RELEASE/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactId/dependencydependencygroupIdch.qos.logback/groupIdartifactIdlogback-core/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency!-- test--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactId/dependency!-- jetty--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jetty/artifactId/dependency!-- 热部署工具--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdscopetest/scope/dependency/dependencies
/project2.配置我们的配置文件
server:port: 8081
# Mybatis的配置
mybatis:type-aliases-package: com.jsxs.pojo # 起别名mapper-locations: classpath:mybatis/mapper/*.xml # 路径配置# Spring的配置
spring:application:name: SpringCloud-provider-deptdatasource:url: jdbc:mysql://localhost:3306/db01?useUnicodetruecharacterEncodingutf-8username: rootpassword: 121788driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceeureka:client:service-url: defaultZone: http://localhost:7001/eureka/ #注册到这个注册中心instance:instance-id: jsxs-dept-eureka-8081 # 服务者的id为这个info:app.name: jsxs-springcloudcompany.name: pdd3.配置我们的MVC三层框架
(1).dao层和mapper的配置
com/jsxs/dao/DeptDao.java
package com.jsxs.dao;import com.jsxs.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:29* PackageName:com.jsxs.dao* ClassName: DeptDao* Description: TODO* Version 1.0*/
Mapper
Repository
public interface DeptDao {public boolean addDept(Dept dept);public Dept queryById(Long id);public ListDept all();
}mybatis/mapper/DeptMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtd!-- 1. 我们首先要绑定工作空间--
mapper namespacecom.jsxs.dao.DeptDao!-- 2. 我们编写SQL语句 --insert idaddDept parameterTypecom.jsxs.pojo.Deptinsert into dept(deptno,dname,db_source)values(#{deptno},#{dname},DATABASE())/insertselect idqueryById resultTypecom.jsxs.pojo.Dept parameterTypeLongselect *from dept where deptno#{id}/selectselect idall resultTypecom.jsxs.pojo.Deptselect *from dept/select
/mapper
(2).server和serverImpl的配置
com/jsxs/service/DeptService.java
package com.jsxs.service;import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Service;import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:56* PackageName:com.jsxs.dao.service* ClassName: DeptService* Description: TODO* Version 1.0*/
public interface DeptService {public boolean addDept(Dept dept);public Dept queryById(Long id);public ListDept all();
}
com/jsxs/service/DeptServiceImpl.java
package com.jsxs.service;import com.jsxs.dao.DeptDao;
import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:57* PackageName:com.jsxs.dao.service* ClassName: DeptServiceImpl* Description: TODO* Version 1.0*/Service
public class DeptServiceImpl implements DeptService {Resourceprivate DeptDao deptDao;Overridepublic boolean addDept(Dept dept) {return deptDao.addDept(dept);}Overridepublic Dept queryById(Long id) {return deptDao.queryById(id);}Overridepublic ListDept all() {return deptDao.all();}
}
(3).controller的配置
com/jsxs/controller/DeptController.java
package com.jsxs.controller;import com.jsxs.pojo.Dept;
import com.jsxs.service.DeptService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 19:59* PackageName:com.jsxs.controller* ClassName: DeptController* Description: TODO* Version 1.0*/RestController
public class DeptController {Resourceprivate DeptService deptService;PostMapping(/dept/add)public Boolean addDept(Dept dept) {boolean flag deptService.addDept(dept);return flag;}GetMapping(/dept/queryById/{id})public Dept queryById(PathVariable(id) Long id) {Dept dept deptService.queryById(id);return dept;}GetMapping(/dept/all)public ListDept all() {ListDept all deptService.all();return all;}
}
4.向注册中心注册服务
com/jsxs/Demo02Application.java
package com.jsxs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;SpringBootApplicationEnableEurekaClientpublic class Demo02Application {public static void main(String[] args) {SpringApplication.run(Demo02Application.class, args);}}(八)、SpringCloud-Consumer (消费者-完整版)
1.导入我们的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--1. ⭐ 引入我们的父项目 --parentgroupIdcom.jsxs/groupIdartifactIdSpringCloundTest/artifactIdversion0.0.1-SNAPSHOT/version/parent!--2. 本项目的三件套 --groupIdcom.jsxs/groupIdartifactIddemo03/artifactIdversion0.0.1-SNAPSHOT/versionnamedemo03/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/properties!--3.⭐ 依赖选项 --dependencies!--1.这个引入我们的实体类 --dependencygroupIdcom.jsxs/groupIdartifactIddemo01/artifactIdversion0.0.1-SNAPSHOT/version/dependency!--2.引入我们的erueka和监视器 --!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-eureka/artifactIdversion1.4.6.RELEASE/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!-- 热部署工具--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactIdscopetest/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project2.配置我们的配置文件
server:port: 80eureka:client:service-url:defaultZone: http://localhost:7001/eureka/ #像那一个注册中心注册自己instance:instance-id: jsxs-dept-eureka-80 # 编号
spring:application:name: SpringCloud-counsumer-dept
3.配置我们的MVC框架
com/jsxs/config/ConfigBean.java
package com.jsxs.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** Author Jsxs* Date 2023/10/15 21:16* PackageName:com.jsxs.config* ClassName: ConfigBean* Description: TODO* Version 1.0*/
Configuration
public class ConfigBean {// 把RestTemplate注入到Spring中去Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}
com/jsxs/controller/DeptConsumerController.java
package com.jsxs.controller;import com.jsxs.pojo.Dept;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import javax.annotation.Resource;
import java.util.List;/*** Author Jsxs* Date 2023/10/15 21:21* PackageName:com.jsxs.controller* ClassName: DeptConsumerController* Description: TODO* Version 1.0*/
RestController
public class DeptConsumerController {Resource// (URI url, 实体 map,ClassT responseType) 地址---- 实体 ----返回类型.classprivate RestTemplate restTemplate; // 提供多种便捷访问远程 访问http服务的方法简单的Rest// 设置服务层的前缀为常量private static final String REST_URL_PREFIX http://localhost:8081;// 根据id进行数据的查找// 用户层的这个访问路径可以随意写没有必要和服务层的路径完全一致RequestMapping(/consumer/dept/get/{id})public Dept get(PathVariable(id) Long deptno) {// 这里返回的是: 服务层的路径return restTemplate.getForObject(REST_URL_PREFIX /dept/queryById/ deptno, Dept.class);}// 添加数据RequestMapping(/consumer/dept/add)public boolean add(Dept dept) {return restTemplate.postForObject(REST_URL_PREFIX /dept/add, dept, Boolean.class);}// 查找全部数据RequestMapping(/consumer/dept/all)public ListDept all() {return restTemplate.getForObject(REST_URL_PREFIX /dept/all, List.class);}
}
4.向注册中心注册服务
package com.jsxs;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;SpringBootApplicationEnableEurekaClientpublic class Demo03Application {public static void main(String[] args) {SpringApplication.run(Demo03Application.class, args);}}5.测试
先开启注册中心: eureka-7001;然后开启我们的服务提供者: demo2-8081;最后开启我们的服务消费者: demo3-80