1.SpringCloud整合eureka
Eureka Server:SpringCloud默认注册中心
引入jar包
在pom文件中引入相对应的jar包
<!--eureka-server服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
配置
在resource资源路径下,创建application.yml
server:
port: 7900
spring:
application:
name: eureka
eureka:
client:
service-url:
defaultZone: http://localhost:7900/eureka
register-with-eureka: false
fetch-registry: false
启动类添加注解
@EnableEurekaServer
@SpringBootApplication
public class CloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(CloudEurekaApplication.class, args);
}
}
启动
验证
localhost:7900
服务状态为up则为启动成功
SpringCloud整合Feign
Feign:简单来说是SpringCloud项目中各微服务之间互相调用 HTTP API
实例
microservice-consumer-movie微服务
在pom.xml中引入Feign的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
使用Spring MVC注解 (Spring MVC注解和Feign注解可以选一个)
创建接口文件UserFeignClient
@FeignClient("microservice-provider-user")
public interface UserFeignClient {
@RequestMapping(value="/simple/{id}",method=RequestMethod.GET)
public User getUserById(@PathVariable("id") Long id);
@RequestMapping(value="/getUserById",method=RequestMethod.POST)
public User postUserById(@RequestBody User user);
}
使用Feign注解
创建Feign配置类FeignConfig
@Configuration
public class FeignConfig {
@Bean
public Contract feignConfiguration(){
return new feign.Contract.Default();
}
}
创建接口文件UserFeignClient
@FeignClient(name="microservice-provider-user",configuration=FeignConfig.class)
public interface UserFeignClient {
@RequestLine("GET /simple/{id}")
public User getUserById(@Param("id") Long id);
@RequestLine("POST /getUserById")
public User postUserById(@RequestBody User user);
}
Controller
@RestController
public class MovieController {
@Autowired
private UserFeignClient userFeignClient;
@GetMapping("/getUserById/{id}")
public User getUserById(@PathVariable Long id) {
return userFeignClient.getUserById(id);
}
@GetMapping("/postUserById/{id}")
public User postUserById(@PathVariable Long id) {
User user = new User();
user.setId(id);
return userFeignClient.postUserById(user);
}
}
启动类加上@EnableFeignClients注解
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MicroserviceSimpleConsumerMovieApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserviceSimpleConsumerMovieApplication.class, args);
}
}
microservice-provider-user微服务
Controller
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/simple/{id}")
public User findById(@PathVariable Long id) {
return userRepository.findById(id).orElse(null);
}
@PostMapping(value="/getUserById")
public User findById(@RequestBody User user) {
return userRepository.findById(user.getId()).orElse(null);
}
}
测试
启动项目后,使用postman调用http://localhost:8011/getUserById/1接口,成功输出结果
在postman中调用http://localhost:8011/postUserById/3,成功输出结果