Skip to content

Commit f1b027a

Browse files
committed
1.新增示例 2.升级开发版本
1 parent e305242 commit f1b027a

File tree

10 files changed

+137
-7
lines changed

10 files changed

+137
-7
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.lvyahui8</groupId>
88
<artifactId>spring-boot-data-aggregator</artifactId>
9-
<version>1.0.1</version>
9+
<version>1.0.2-SNAPHOST</version>
1010
<modules>
1111
<module>spring-boot-data-aggregator-core</module>
1212
<module>spring-boot-data-aggregator-autoconfigure</module>

spring-boot-data-aggregator-autoconfigure/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-boot-data-aggregator</artifactId>
77
<groupId>io.github.lvyahui8</groupId>
8-
<version>1.0.1</version>
8+
<version>1.0.2-SNAPHOST</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-boot-data-aggregator-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-boot-data-aggregator</artifactId>
77
<groupId>io.github.lvyahui8</groupId>
8-
<version>1.0.1</version>
8+
<version>1.0.2-SNAPHOST</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-boot-data-aggregator-example/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-boot-data-aggregator</artifactId>
77
<groupId>io.github.lvyahui8</groupId>
8-
<version>1.0.1</version>
8+
<version>1.0.2-SNAPHOST</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-boot-data-aggregator-example/src/main/java/io/github/lvyahui8/spring/example/aggregate/UserAggregate.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.github.lvyahui8.spring.example.aggregate;
22

3-
import io.github.lvyahui8.spring.annotation.DataConsumer;
4-
import io.github.lvyahui8.spring.annotation.DataProvider;
53
import io.github.lvyahui8.spring.annotation.DataConsumer;
64
import io.github.lvyahui8.spring.annotation.DataProvider;
75
import io.github.lvyahui8.spring.example.model.Post;
@@ -23,4 +21,13 @@ public User userWithPosts(
2321
user.setPosts(posts);
2422
return user;
2523
}
24+
25+
@DataProvider(id="userFullData")
26+
public User userFullData(@DataConsumer(id = "user") User user,
27+
@DataConsumer(id = "posts") List<Post> posts,
28+
@DataConsumer(id = "followers") List<User> followers) {
29+
user.setFollowers(followers);
30+
user.setPosts(posts);
31+
return user;
32+
}
2633
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package io.github.lvyahui8.spring.example.facade;
2+
3+
import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
4+
import io.github.lvyahui8.spring.example.model.Post;
5+
import io.github.lvyahui8.spring.example.model.User;
6+
import io.github.lvyahui8.spring.example.service.FollowService;
7+
import io.github.lvyahui8.spring.example.service.PostService;
8+
import io.github.lvyahui8.spring.example.service.UserService;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.stereotype.Component;
11+
12+
import java.lang.reflect.InvocationTargetException;
13+
import java.util.Collections;
14+
import java.util.List;
15+
import java.util.concurrent.*;
16+
17+
/**
18+
19+
* @since 2019/6/11 21:46
20+
*/
21+
@Component
22+
public class UserQueryFacade {
23+
@Autowired
24+
private FollowService followService;
25+
@Autowired
26+
private PostService postService;
27+
@Autowired
28+
private UserService userService;
29+
30+
@Autowired
31+
private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
32+
33+
public User getUserData(Long userId) {
34+
User user = userService.get(userId);
35+
user.setPosts(postService.getPosts(userId));
36+
user.setFollowers(followService.getFollowers(userId));
37+
return user;
38+
}
39+
40+
public User getUserDataByParallel(Long userId) throws InterruptedException, ExecutionException {
41+
ExecutorService executorService = Executors.newFixedThreadPool(3);
42+
CountDownLatch countDownLatch = new CountDownLatch(3);
43+
Future<User> userFuture = executorService.submit(() -> {
44+
try{
45+
return userService.get(userId);
46+
}finally {
47+
countDownLatch.countDown();
48+
}
49+
});
50+
Future<List<Post>> postsFuture = executorService.submit(() -> {
51+
try{
52+
return postService.getPosts(userId);
53+
}finally {
54+
countDownLatch.countDown();
55+
}
56+
});
57+
Future<List<User>> followersFuture = executorService.submit(() -> {
58+
try{
59+
return followService.getFollowers(userId);
60+
}finally {
61+
countDownLatch.countDown();
62+
}
63+
});
64+
countDownLatch.await();
65+
User user = userFuture.get();
66+
user.setFollowers(followersFuture.get());
67+
user.setPosts(postsFuture.get());
68+
return user;
69+
}
70+
71+
public User getUserFinal(Long userId) throws InterruptedException,
72+
IllegalAccessException, InvocationTargetException {
73+
return dataBeanAggregateQueryFacade.get("userFullData",
74+
Collections.singletonMap("userId", userId), User.class);
75+
}
76+
}

spring-boot-data-aggregator-example/src/main/java/io/github/lvyahui8/spring/example/model/User.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ public class User {
1414
private String username;
1515
private String email;
1616
List<Post> posts ;
17+
List<User> followers;
1718
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.github.lvyahui8.spring.example.service;
2+
3+
import io.github.lvyahui8.spring.example.model.User;
4+
5+
import java.util.List;
6+
7+
/**
8+
9+
* @since 2019/6/11 21:31
10+
*/
11+
public interface FollowService {
12+
List<User> getFollowers(Long userId);
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.github.lvyahui8.spring.example.service.impl;
2+
3+
import io.github.lvyahui8.spring.annotation.DataProvider;
4+
import io.github.lvyahui8.spring.annotation.InvokeParameter;
5+
import io.github.lvyahui8.spring.example.model.User;
6+
import io.github.lvyahui8.spring.example.service.FollowService;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
/**
13+
14+
* @since 2019/6/11 21:32
15+
*/
16+
@Service
17+
public class FollowServiceImpl implements FollowService {
18+
@DataProvider(id = "followers")
19+
@Override
20+
public List<User> getFollowers(@InvokeParameter("userId") Long userId) {
21+
try { Thread.sleep(1000L); } catch (InterruptedException e) {}
22+
int size = 10;
23+
List<User> users = new ArrayList<>(size);
24+
for(int i = 0 ; i < size; i++) {
25+
User user = new User();
26+
user.setUsername("name"+i);
27+
user.setEmail("email"+i+"@fox.com");
28+
user.setId((long) i);
29+
users.add(user);
30+
};
31+
return users;
32+
}
33+
}

spring-boot-data-aggregator-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-boot-data-aggregator</artifactId>
77
<groupId>io.github.lvyahui8</groupId>
8-
<version>1.0.1</version>
8+
<version>1.0.2-SNAPHOST</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

0 commit comments

Comments
 (0)