注册中心
spring cloud ( ribbon 他是下面的依赖 默认下的)
(使用 feign 需要自行加依赖)
//依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
//spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
//注册中心的依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
//maven 的注释
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
//注册中心的依赖
注册中心需要一个application.yml文件
//端口
server:
port: 8761
eureka:
instance:
//名字
hostname: localhost
client:
#是否注册到注册中心,注册中心自己不需要注册
registerWithEureka: false
#是否抓取注册中心的注册信息
fetchRegistry: false
#是微服务和客服端用来注册和发现的地址
serviceUrl:
defaultZone: http://localhost:8761/eureka/
注册中心的main
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
客户端pom
//spring cloud 的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
//小辣椒的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
//spring cloud 的组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
客户端的application.yml文件
server:
port: 809
eureka:
instance:
//是否使用ip地址
prefer-ip-address: true
hostname: localhost
client:
#是否注册到注册中心,注册中心自己不需要注册
registerWithEureka: true
fetch-registry: true
#是微服务和客服端用来注册和发现的地址
serviceUrl:
defaultZone: http://192.168.241.130:8761/eureka/
//给客户端的名字
spring:
application:
name: uselist
客户端的main
@SpringBootApplication
@EnableEurekaClient
//启用feign
@EnableFeignClients
@RestController
public class empMain {
//使用ribbon实例化RestTemplate
@LoadBalanced
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
new SpringApplicationBuilder(empMain.class).web(true).run(args);
}
}
使用feign
要使用接口
//你要链接的微服务
@FeignClient(name = "USERSERVICE")
public interface Query {
//他的路径
@GetMapping("/emp/{id}")
public Emp querys(@PathVariable("id") String id);
@PostMapping("/emp")
public Result add(@RequestBody Emp emp);
@PutMapping("/emp/{id}")
public Result pub(@PathVariable("id")String id , @RequestBody Emp emp) ;
}
//返回josn对象
@RestController
public class contoll {
//自动装配 接口
@Autowired
private Query query;
@GetMapping(value = "most")
public Result equals(Emp emp){
String id="1";
Result add = query.add(emp);
return add;
}
@GetMapping(value = "host/{id}")
//获取url路径的参数
public Result equals(@PathVariable("id") String id,Emp e){
e.setName("99");
Result emp=query.pub(id,e);
return emp;
}
}
使用ribbon
@RestController
public class contes {
//自动装配
@Autowired
private RestTemplate restTemplate;
@GetMapping(value="/as")
public String name(){
//url路径
String url="http://USERSERVICE/a";
String strin = restTemplate.getForObject(url, String.class);//返回的路径
return strin;
}
}
服务端
service的pom
<dependencies>
//spring cloud 组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
//spring cloud 组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
//spring boot 的wed包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
//mybatis plus 组件
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
//mysql 驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
//小辣椒
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
服务端的application.yml
server:
port: 8092
eureka:
instance:
//是否使用ip
prefer-ip-address: true
hostname: localhost
client:
#是否注册到注册中心,注册中心自己不需要注册
registerWithEureka: true
#是微服务和客服端用来注册和发现的地址
fetch-registry: true
serviceUrl:
#链接注册中心
defaultZone: http://192.168.0.113:8761/eureka/
spring:
application:
#给服务端的名字
name: userservice
#连接数据库4要数
datasource:
url: jdbc:mysql://localhost/unit02
username: root
password: ps123456
driver-class-name: com.mysql.jdbc.Driver
服务端的main
@RestController
@SpringBootApplication
//mybatis plus 扫描包
@MapperScan("cn.ps.mapperll")
public class Starys {
/**
* 分页插件
*/
@LoadBalanced
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Starys.class, args);
}
}