기업 분포 식 마이크로 서비스 클 라 우 드 SpringCloud SpringBoot mybatis (3) 서비스 소비자 (Feign)

1. Feign 프로필 Feign 은 성명 식 의 가짜 Http 클 라 이언 트 로 Http 클 라 이언 트 를 더욱 간단하게 만 듭 니 다.Feign 을 사용 하려 면 인 터 페 이 스 를 만 들 고 주석 을 달 아야 합 니 다.이것 은 삽입 가능 한 주해 특성 을 가지 고 있 으 며, Feign 주해 와 JAX - RS 주 해 를 사용 할 수 있다.Feign 은 삽입 가능 한 인 코더 와 디코더 를 지원 합 니 다.Feign 은 기본적으로 리본 을 통합 하고 유레카 와 결합 해 부하 균형 효 과 를 기본적으로 구현 했다.
요컨대
Feign 은 인 터 페 이 스 를 기반 으로 하 는 주 해 를 사용 합 니 다. Feign 은 ribbon 2 를 통합 시 켰 고 준비 작업 은 이전 절 을 계속 사용 하 는 프로젝트 를 통 해 eureka - server 를 시작 합 니 다. 포트 는 8761 입 니 다.서비스 - hi 를 두 번 시작 합 니 다. 포트 는 각각 8762, 8773 입 니 다.
3. feign 서 비 스 를 만 들 고 spring - boot 프로젝트 를 새로 만 듭 니 다. serice - fegn 이 라 고 이름 을 지 었 습 니 다. pom 파일 에 Feign 의 시작 은 spring - cloud - starter - feign, Eureka 의 시작 은 spring - cloud - starter - eureka, 웹 의 시작 은 spring - boot - starter - web 에 의존 합 니 다. 코드 는 다음 과 같 습 니 다.


    4.0.0
    com.forezp
    service-feign
    0.0.1-SNAPSHOT
    jar
    service-feign
    Demo project for Spring Boot
    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.2.RELEASE
         
    
    
        UTF-8
        UTF-8
        1.8
    
    
        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
            org.springframework.cloud
            spring-cloud-starter-feign
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Dalston.RC1
                pom
                import
            
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
    
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    


프로젝트 의 프로필 application. yml 파일 에서 지정 한 프로그램 이름 은 service - fegn 이 고 포트 번 호 는 8765 이 며 서비스 등록 주 소 는?http://localhost:8761/eureka/ , 코드 는 다음 과 같 습 니 다:
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8765
spring:
  application:
    name: service-feign

프로그램의 시작 클래스 ServiceFeignApplication 에 @ EnableFeignClient 주석 을 추가 하여 Feign 을 여 는 기능:
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ServiceFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceFeignApplication.class, args);
    }
}

feign 인 터 페 이 스 를 정의 합 니 다. @ FeignClient ("서비스 이름") 를 통 해 어떤 서 비 스 를 호출 할 지 지정 합 니 다.예 를 들 어 코드 에서 서비스 - hi 서비스의 '/ hi' 인 터 페 이 스 를 호출 했 는데 코드 는 다음 과 같다.
/**
 * Created by fangzhipeng on 2017/4/6.
 */
@FeignClient(value = "service-hi")
public interface SchedualServiceHi {
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

웹 층 의 controller 층 에 '/ hi' API 인 터 페 이 스 를 대외 적 으로 노출 하고 위 에서 정의 한 Feign 클 라 이언 트 Schedual ServiceHi 를 통 해 서 비 스 를 소비 합 니 다.코드 는 다음 과 같 습 니 다:
@RestController
public class HiController {
    @Autowired
    SchedualServiceHi schedualServiceHi;
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    public String sayHi(@RequestParam String name){
        return schedualServiceHi.sayHiFromClientOne(name);
    }
}

구조 코드 는 다음 과 같다.
Spring Cloud 대형 기업 분포 식 마이크로 서비스 클 라 우 드 구조 소스 코드

좋은 웹페이지 즐겨찾기