Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ade2326

Browse files
committed
getProvider方法拆分到单独从class中
1 parent 14d89e0 commit ade2326

File tree

6 files changed

+79
-38
lines changed

6 files changed

+79
-38
lines changed

‎spring-boot-data-aggregator-autoconfigure/src/main/java/io/github/lvyahui8/spring/autoconfigure/BeanAggregateAutoConfiguration.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.github.lvyahui8.spring.aggregate.repository.impl.DataProviderRepositoryImpl;
1313
import io.github.lvyahui8.spring.aggregate.service.DataBeanAggregateService;
1414
import io.github.lvyahui8.spring.aggregate.service.impl.DataBeanAggregateServiceImpl;
15+
import io.github.lvyahui8.spring.aggregate.service.impl.ProviderServiceImpl;
1516
import io.github.lvyahui8.spring.aggregate.util.DefinitionUtils;
1617
import io.github.lvyahui8.spring.annotation.DataProvider;
1718
import io.github.lvyahui8.spring.facade.FacadeInitializer;
@@ -65,7 +66,9 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
6566
@ConditionalOnMissingBean
6667
public DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade(
6768
@Qualifier("dataProviderRepository") DataProviderRepository dataProviderRepository) {
68-
DataBeanAggregateQueryFacadeImpl facade = new DataBeanAggregateQueryFacadeImpl(dataBeanAggregateQueryService(dataProviderRepository));
69+
final ProviderServiceImpl providerService = new ProviderServiceImpl();
70+
providerService.setRepository(dataProviderRepository);
71+
DataBeanAggregateQueryFacadeImpl facade = new DataBeanAggregateQueryFacadeImpl(dataBeanAggregateQueryService(dataProviderRepository),providerService);
6972
FacadeInitializer.initFacade(facade);
7073
return facade;
7174
}

‎spring-boot-data-aggregator-core/src/main/java/io/github/lvyahui8/spring/aggregate/facade/impl/DataBeanAggregateQueryFacadeImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.github.lvyahui8.spring.aggregate.func.MultipleArgumentsFunction;
55
import io.github.lvyahui8.spring.aggregate.model.DataProvideDefinition;
66
import io.github.lvyahui8.spring.aggregate.service.DataBeanAggregateService;
7+
import io.github.lvyahui8.spring.aggregate.service.ProviderService;
78
import org.springframework.util.Assert;
89

910
import java.lang.reflect.InvocationTargetException;
@@ -20,8 +21,11 @@ public class DataBeanAggregateQueryFacadeImpl implements DataBeanAggregateQueryF
2021

2122
private final DataBeanAggregateService dataBeanAggregateService;
2223

23-
public DataBeanAggregateQueryFacadeImpl(DataBeanAggregateService dataBeanAggregateService) {
24+
private final ProviderService providerService;
25+
26+
public DataBeanAggregateQueryFacadeImpl(DataBeanAggregateService dataBeanAggregateService,ProviderService providerService) {
2427
this.dataBeanAggregateService = dataBeanAggregateService;
28+
this.providerService = providerService;
2529
}
2630

2731
@Override
@@ -45,7 +49,7 @@ public <T> T get(Map<String, Object> invokeParams, MultipleArgumentsFunction<T>
4549
invokeParams = Collections.emptyMap();
4650
}
4751

48-
DataProvideDefinition provider = dataBeanAggregateService.getProvider(multipleArgumentsFunction);
52+
DataProvideDefinition provider = providerService.getProvider(multipleArgumentsFunction);
4953
Method applyMethod = provider.getMethod();
5054
boolean accessible = applyMethod.isAccessible();
5155
if(! accessible) {

‎spring-boot-data-aggregator-core/src/main/java/io/github/lvyahui8/spring/aggregate/service/DataBeanAggregateService.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,5 @@ <T> T get(String id, Map<String,Object> invokeParams, Class<T> resultType)
4343
<T> T get(DataProvideDefinition provider, Map<String,Object> invokeParams, Class<T> resultType)
4444
throws InterruptedException, InvocationTargetException, IllegalAccessException;
4545

46-
/**
47-
* 通过MultipleArgumentsFunction获取provider实例
48-
*
49-
* @param function 多参函数
50-
* @return provider实例
51-
* @throws IllegalAccessException ignored
52-
*/
53-
DataProvideDefinition getProvider(MultipleArgumentsFunction<?> function) throws IllegalAccessException;
46+
5447
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.github.lvyahui8.spring.aggregate.service;
2+
3+
import io.github.lvyahui8.spring.aggregate.func.MultipleArgumentsFunction;
4+
import io.github.lvyahui8.spring.aggregate.model.DataProvideDefinition;
5+
6+
/**
7+
* @author feego lvyahui8@gmail.com
8+
* @date 2022年4月2日
9+
*/
10+
public interface ProviderService {
11+
/**
12+
* 通过MultipleArgumentsFunction获取provider实例
13+
*
14+
* @param function 多参函数
15+
* @return provider实例
16+
* @throws IllegalAccessException ignored
17+
*/
18+
DataProvideDefinition getProvider(MultipleArgumentsFunction<?> function) throws IllegalAccessException;
19+
}

‎spring-boot-data-aggregator-core/src/main/java/io/github/lvyahui8/spring/aggregate/service/impl/DataBeanAggregateServiceImpl.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,33 +57,6 @@ private AggregationContext initQueryContext(DataProvideDefinition rootProvider,
5757
return aggregationContext;
5858
}
5959

60-
@Override
61-
public DataProvideDefinition getProvider(MultipleArgumentsFunction<?> multipleArgumentsFunction) throws IllegalAccessException {
62-
DataProvideDefinition provider = repository.get(multipleArgumentsFunction.getClass().getName());
63-
if(provider != null) {
64-
return provider;
65-
}
66-
Method[] methods = multipleArgumentsFunction.getClass().getMethods();
67-
Method applyMethod = null;
68-
69-
70-
for (Method method : methods) {
71-
if(! Modifier.isStatic(method.getModifiers()) && ! method.isDefault()) {
72-
applyMethod = method;
73-
break;
74-
}
75-
}
76-
77-
if(applyMethod == null) {
78-
throw new IllegalAccessException(multipleArgumentsFunction.getClass().getName());
79-
}
80-
81-
provider = DefinitionUtils.getProvideDefinition(applyMethod);
82-
provider.setTarget(multipleArgumentsFunction);
83-
provider.setId(multipleArgumentsFunction.getClass().getName());
84-
repository.put(provider);
85-
return provider;
86-
}
8760

8861
@Override
8962
public <T> T get(String id, Map<String, Object> invokeParams, Class<T> resultType)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package io.github.lvyahui8.spring.aggregate.service.impl;
2+
3+
import io.github.lvyahui8.spring.aggregate.func.MultipleArgumentsFunction;
4+
import io.github.lvyahui8.spring.aggregate.model.DataProvideDefinition;
5+
import io.github.lvyahui8.spring.aggregate.repository.DataProviderRepository;
6+
import io.github.lvyahui8.spring.aggregate.service.ProviderService;
7+
import io.github.lvyahui8.spring.aggregate.util.DefinitionUtils;
8+
import lombok.Setter;
9+
import org.springframework.stereotype.Component;
10+
11+
import java.lang.reflect.Method;
12+
import java.lang.reflect.Modifier;
13+
14+
/**
15+
* @author feego lvyahui8@gmail.com
16+
* @date 2022年4月2日
17+
*/
18+
public class ProviderServiceImpl implements ProviderService {
19+
@Setter
20+
DataProviderRepository repository;
21+
@Override
22+
public DataProvideDefinition getProvider(MultipleArgumentsFunction<?> multipleArgumentsFunction) throws IllegalAccessException {
23+
DataProvideDefinition provider = repository.get(multipleArgumentsFunction.getClass().getName());
24+
if(provider != null) {
25+
return provider;
26+
}
27+
Method[] methods = multipleArgumentsFunction.getClass().getMethods();
28+
Method applyMethod = null;
29+
30+
31+
for (Method method : methods) {
32+
if(! Modifier.isStatic(method.getModifiers()) && ! method.isDefault()) {
33+
applyMethod = method;
34+
break;
35+
}
36+
}
37+
38+
if(applyMethod == null) {
39+
throw new IllegalAccessException(multipleArgumentsFunction.getClass().getName());
40+
}
41+
42+
provider = DefinitionUtils.getProvideDefinition(applyMethod);
43+
provider.setTarget(multipleArgumentsFunction);
44+
provider.setId(multipleArgumentsFunction.getClass().getName());
45+
repository.put(provider);
46+
return provider;
47+
}
48+
49+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /