diff --git a/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ExceptionUtil.java b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ExceptionUtil.java new file mode 100644 index 000000000..3b8349fc6 --- /dev/null +++ b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ExceptionUtil.java @@ -0,0 +1,14 @@ +package org.springframework.cloud.alibaba.cloud.examples; + +import com.alibaba.csp.sentinel.slots.block.BlockException; + +/** + * @author fangjian + */ +public class ExceptionUtil { + + public static void handleException(BlockException ex) { + System.out.println("Oops: " + ex.getClass().getCanonicalName()); + } + +} diff --git a/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java index 543612167..2c12ad322 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java +++ b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ServiceApplication.java @@ -2,6 +2,9 @@ package org.springframework.cloud.alibaba.cloud.examples; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.alibaba.sentinel.annotation.SentinelProtect; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; /** * @author xiaojing @@ -9,6 +12,17 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ServiceApplication { + @Bean + @SentinelProtect(blockHandler = "handleException", blockHandlerClass = ExceptionUtil.class) + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + @Bean + public RestTemplate restTemplate2() { + return new RestTemplate(); + } + public static void main(String[] args) { SpringApplication.run(ServiceApplication.class, args); } diff --git a/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java index 773a40d71..7d749edfd 100644 --- a/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java +++ b/spring-cloud-alibaba-examples/sentinel-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java @@ -1,9 +1,10 @@ package org.springframework.cloud.alibaba.cloud.examples; -import org.springframework.cloud.alibaba.sentinel.custom.EnableSentinel; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; /** * @author xiaojing @@ -11,8 +12,10 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { + @Autowired + private RestTemplate restTemplate; + @RequestMapping(value = "/hello", method = RequestMethod.GET) - @EnableSentinel("resource") public String hello() { return "Hello"; } @@ -22,4 +25,9 @@ public class TestController { return "Hello test"; } + @RequestMapping(value = "/template", method = RequestMethod.GET) + public String client() { + return restTemplate.getForObject("http://www.taobao.com/test", String.class); + } + }