提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
spring-cloud-provider
使用步骤
1.引入依赖
代码如下(示例):
<!-- spring-cloud-starter-eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--为注册服务添加监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--实体类(父项目)-->
<dependency>
<groupId>com.beidaqingniao</groupId>
<artifactId>spring-cloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</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-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
2.controller(mapper和service省略)
代码如下(示例):
package com.controller;
import com.entity.Dept;
import com.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/dept")
public class DeptController {
@Autowired
DeptService service;
@PostMapping("/add")
public int addDept(Dept dept){
return service.addDept(dept);
}
@GetMapping("/get/{id}")
public Dept getById(@PathVariable Integer id){
return service.selectById(id);
}
@GetMapping("/list")
public List<Dept> getById(){
return service.selectAll();
}
3.主程序
代码如下(示例):
package com;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@MapperScan("com.dao")
@EnableEurekaClient
@EnableDiscoveryClient//服务发现
public class DeptProvider_8001 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8001.class, args);
}
}
4.application.yml
代码如下(示例):
spring:
application:
name: spring-cloud-provider-dept
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/chen?serverTimezone=UTC
username: root
password: 123
#eureka配置 服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: springcloud-provider-dept-8001 #状态后面的名称(不太重要)
#info配置(状态后面名称的链接,一些info信息)
info:
app.name: chen
company.name: 邮箱
server:
port: 8001
mybatis:
type-aliases-package: com.entity
mapper-locations: classpath:mybaits/mapper/*.xml
DiscoveryClient
代码如下(示例):
@Autowired
DiscoveryClient client;
//注册进来的微服务,获取一些info
@GetMapping("/discovery")
public void getDiscoveryClientInfo(){
System.out.println("DiscoveryClient===>"+client.getServices());
//此处的参数为服务名称
List<ServiceInstance> instances = client.getInstances("SPRING-CLOUD-PROVIDER-DEPT");
for (ServiceInstance instance : instances) {
System.out.println(instance.getHost() + "\t" +
instance.getPort() + "\t" +
instance.getUri() + "\t" +
instance.getServiceId() + "\t");
}
}
总结
provider也可以配置多个,复制粘贴即可
服务名称即:spring.application.name