工程项目POM文件
<packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <mysql.version>5.1.43</mysql.version> <druid.version>1.1.19</druid.version> <spring.boot.version>2.3.6.RELEASE</spring.boot.version> <spring.cloud.version>Hoxton.SR9</spring.cloud.version> <spring.cloud.eureka.server.version>2.2.6.RELEASE</spring.cloud.eureka.server.version> <spring.cloud.eureka.client.version>2.2.6.RELEASE</spring.cloud.eureka.client.version> <spring.cloud.config.version>2.2.6.RELEASE</spring.cloud.config.version> <spring.cloud.ribbon.version>2.2.6.RELEASE</spring.cloud.ribbon.version> <spring.cloud.feign.version>2.2.6.RELEASE</spring.cloud.feign.version> <spring.cloud.hystrix.version>2.2.6.RELEASE</spring.cloud.hystrix.version> <spring.cloud.hystrix.dashboard.version>2.2.6.RELEASE</spring.cloud.hystrix.dashboard.version> <spring.cloud.zuul.version>2.2.6.RELEASE</spring.cloud.zuul.version> <mybatis.spring.boot.version>2.1.0</mybatis.spring.boot.version> <lombok.version>1.18.12</lombok.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>${spring.cloud.eureka.server.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>${spring.cloud.eureka.client.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>${spring.cloud.ribbon.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> <version>${spring.cloud.config.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> <version>${spring.cloud.config.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>${spring.cloud.feign.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>${spring.cloud.hystrix.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> <version>${spring.cloud.hystrix.dashboard.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> <version>${spring.cloud.zuul.version}</version> </dependency> </dependencies> </dependencyManagement>
服务框架:
Dept类
@Data public class Dept implements Serializable { private Long deptno; private String dname; private String db_source; }
<dependency> <groupId>com.bearpx</groupId> <artifactId>microservicecloud-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
server: port: 8001 mybatis: config-location: classpath:mybatis/mybatis-config.xml type-aliases-package: com.bearpx.springcloud.entity mapper-locations: - classpath:mapper/*.xml spring: application: name: microservicecloud-dept-provider datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/clouddb01?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: Mysql2020 dbcp2: min-idle: 5 initial-size: 5 max-total: 10 max-wait-millis: 200
<configuration> <settings> <setting name="cacheEnabled" value="true"/> </settings> </configuration>
DROP DATABASE if EXISTS clouddb01; CREATE DATABASE clouddb01 CHARACTER SET UTF8; USE clouddb01; CREATE TABLE dept ( deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, dname VARCHAR(50), db_source varchar(50) ); INSERT INTO dept(dname, db_source) VALUES(‘开发部‘, DATABASE()); INSERT INTO dept(dname, db_source) VALUES(‘人事部‘, DATABASE()); INSERT INTO dept(dname, db_source) VALUES(‘财务部‘, DATABASE()); INSERT INTO dept(dname, db_source) VALUES(‘市场部‘, DATABASE()); INSERT INTO dept(dname, db_source) VALUES(‘运维部‘, DATABASE());
@Mapper public interface DeptDao { public boolean addDept(Dept dept); public Dept findById(Long id); public List<Dept> findAll(); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.bearpx.springcloud.dept.dao.DeptDao"> <select id="findById" resultType="dept" parameterType="Long"> select deptno, dname, db_source from dept where deptno=#{deptno} </select> <select id="findAll" resultType="dept"> select deptno, dname, db_source from dept </select> <insert id="addDept" parameterType="dept"> insert into dept( dname, db_source) values( #{dname}, DATABASE()) </insert> </mapper>
@Service // import org.springframework.stereotype.Service; public class DeptServiceImpl implements DeptService { @Autowired private DeptDao deptDao; public boolean add(Dept dept) { return deptDao.addDept(dept); } public Dept get(Long id) { return deptDao.findById(id); } public List<Dept> list() { return deptDao.findAll(); } }
@RestController @RequestMapping("/dept") public class DeptController { @Autowired private DeptService deptService; @RequestMapping(value = "/add", method = RequestMethod.POST) public boolean add(@RequestBody Dept dept){ return deptService.add(dept); } @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) public Dept get(@PathVariable("id") Long id){ return deptService.get(id); } @RequestMapping(value = "/list", method = RequestMethod.GET) public List<Dept> list(){ return deptService.list(); } }
@SpringBootApplication public class DeptProviderApplication { public static void main(String[] args) { SpringApplication.run(DeptProviderApplication.class, args); } }
<dependencies> <dependency> <groupId>com.bearpx</groupId> <artifactId>microservicecloud-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
@Configuration public class ConfigBean { @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
@RestController public class DeptConsumerController { private final static String REST_DEPT_URL_PREFIX ="http://localhost:8001"; @Autowired private RestTemplate restTemplate; @RequestMapping("/consumer/dept/add") public boolean add(Dept dept){ return restTemplate.postForObject(REST_DEPT_URL_PREFIX+"/dept/add", dept, Boolean.class); } @RequestMapping("/consumer/dept/get/{id}") public Dept get(@PathVariable("id") Long id){ return restTemplate.getForObject(REST_DEPT_URL_PREFIX+"/dept/get/"+id, Dept.class); } @RequestMapping("/consumer/dept/list") public List<Dept> list(){ return restTemplate.getForObject(REST_DEPT_URL_PREFIX+"/dept/list", List.class); } }
@SpringBootApplication public class DeptConsumerApplication { public static void main(String[] args) { SpringApplication.run(DeptConsumerApplication.class, args); } }
原文:https://www.cnblogs.com/kingdomer/p/14273895.html