diff --git a/borrow-service/pom.xml b/borrow-service/pom.xml
index 43143df..edbd89f 100644
--- a/borrow-service/pom.xml
+++ b/borrow-service/pom.xml
@@ -18,6 +18,10 @@
UTF-8
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
diff --git a/borrow-service/src/main/java/com/test/BorrowApplication.java b/borrow-service/src/main/java/com/test/BorrowApplication.java
index ee9da23..a2c5720 100644
--- a/borrow-service/src/main/java/com/test/BorrowApplication.java
+++ b/borrow-service/src/main/java/com/test/BorrowApplication.java
@@ -3,6 +3,7 @@ package com.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
+import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
/**
@@ -13,6 +14,7 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
* @Create 2023/8/14 16:25
*/
@EnableResourceServer
+@EnableFeignClients
@SpringBootApplication
public class BorrowApplication {
public static void main(String[] args) {
diff --git a/borrow-service/src/main/java/com/test/config/WebConfiguration.java b/borrow-service/src/main/java/com/test/config/WebConfiguration.java
deleted file mode 100644
index 55ce8e2..0000000
--- a/borrow-service/src/main/java/com/test/config/WebConfiguration.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.test.config;
-
-import org.springframework.cloud.client.loadbalancer.LoadBalanced;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.oauth2.client.OAuth2ClientContext;
-import org.springframework.security.oauth2.client.OAuth2RestTemplate;
-import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
-
-import javax.annotation.Resource;
-
-/**
- * ClassName: ma
- * Package: com.test.config
- *
- * @author yovinchen
- * @Create 2023/8/21 10:52
- */
-@Configuration
-public class WebConfiguration {
-
- @Resource
- OAuth2ClientContext context;
-
- @Bean
- @LoadBalanced
- public OAuth2RestTemplate restTemplate(){
- return new OAuth2RestTemplate(new ClientCredentialsResourceDetails(), context);
- }
-}
diff --git a/borrow-service/src/main/java/com/test/service/client/BookClient.java b/borrow-service/src/main/java/com/test/service/client/BookClient.java
new file mode 100644
index 0000000..a92df91
--- /dev/null
+++ b/borrow-service/src/main/java/com/test/service/client/BookClient.java
@@ -0,0 +1,20 @@
+package com.test.service.client;
+
+import com.test.entity.Book;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * ClassName: BookClient
+ * Package: com.test.service.client
+ *
+ * @author yovinchen
+ * @Create 2023/8/21 20:29
+ */
+@FeignClient("bookservice")
+public interface BookClient {
+
+ @RequestMapping("/book/{bid}")
+ Book getBookById(@PathVariable("bid") int bid);
+}
diff --git a/borrow-service/src/main/java/com/test/service/client/UserClient.java b/borrow-service/src/main/java/com/test/service/client/UserClient.java
new file mode 100644
index 0000000..c08a3b0
--- /dev/null
+++ b/borrow-service/src/main/java/com/test/service/client/UserClient.java
@@ -0,0 +1,20 @@
+package com.test.service.client;
+
+import com.test.entity.User;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * ClassName: UserClient
+ * Package: com.test.service.client
+ *
+ * @author yovinchen
+ * @Create 2023/8/21 20:29
+ */
+@FeignClient("userservice")
+public interface UserClient {
+
+ @RequestMapping("/user/{uid}")
+ User getUserById(@PathVariable("uid") int uid);
+}
diff --git a/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java b/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java
index f96b65a..5b5cc1f 100644
--- a/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java
+++ b/borrow-service/src/main/java/com/test/service/impl/BorrowServiceImpl.java
@@ -8,6 +8,8 @@ import com.test.entity.User;
import com.test.entity.UserBorrowDetail;
import com.test.mapper.BorrowMapper;
import com.test.service.BorrowService;
+import com.test.service.client.BookClient;
+import com.test.service.client.UserClient;
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@@ -30,16 +32,21 @@ public class BorrowServiceImpl implements BorrowService {
BorrowMapper mapper;
@Resource
- OAuth2RestTemplate template;
+ BookClient bookClient;
+
+ @Resource
+ UserClient userClient;
@Override
public UserBorrowDetail getUserBorrowDetailByUid(int uid) {
List borrow = mapper.getBorrowsByUid(uid);
//这里通过调用getForObject来请求其他服务,并将结果自动进行封装
//获取User信息
- User user = template.getForObject("http://userservice/user/" + uid, User.class);
+ User user = userClient.getUserById(uid);
//获取每一本书的详细信息
- List bookList = borrow.stream().map(b -> template.getForObject("http://bookservice/book/" + b.getBid(), Book.class)).collect(Collectors.toList());
+ List bookList = borrow.stream()
+ .map(b -> bookClient.getBookById(b.getBid()))
+ .collect(Collectors.toList());
return new UserBorrowDetail(user, bookList);
}
}
diff --git a/borrow-service/src/main/resources/application.yml b/borrow-service/src/main/resources/application.yml
index 721e08e..ae38dc7 100644
--- a/borrow-service/src/main/resources/application.yml
+++ b/borrow-service/src/main/resources/application.yml
@@ -17,3 +17,9 @@ security:
resource:
#因为资源服务器得验证你的Token是否有访问此资源的权限以及用户信息,所以只需要一个验证地址
token-info-uri: http://localhost:8500/sso/oauth/check_token
+feign:
+ oauth2:
+ #开启Oauth支持,这样就会在请求头中携带Token了
+ enabled: true
+ #同时开启负载均衡支持
+ load-balanced: true