Skip to content

Commit 481ca36

Browse files
authored
Merge pull request #2 from yungyu16/1.1.0
1.1.0
2 parents 4e8a2d6 + d53a1f4 commit 481ca36

31 files changed

+355
-251
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
@Component
4141
public class InvocationDispatcherImpl extends AbstractInvocationDispatcher<ProxyStub, Void> {
4242
@Override
43-
protected Object invoke(StubContext<ProxyStub> stubContext, Object proxy, Method method, Object[] args) throws Throwable {
44-
System.out.println(stubContext.getAnnotation());
43+
protected Object invoke(StubContext<ProxyStub> stubProxyContext, Object proxy, Method method, Object[] args) throws Throwable {
44+
System.out.println(stubProxyContext.getAnnotation());
4545
System.out.println("InvocationDispatcherImpl");
4646
return null;
4747
}
@@ -75,8 +75,8 @@ public class HelloServiceTest {
7575
@Component
7676
public class InvocationDispatcherImpl extends AbstractInvocationDispatcher<TestClient, Void> {
7777
@Override
78-
protected Object invoke(StubContext<TestClient> stubContext, Object proxy, Method method, Object[] args) throws Throwable {
79-
System.out.println(stubContext.getAnnotation());
78+
protected Object invoke(StubContext<TestClient> stubProxyContext, Object proxy, Method method, Object[] args) throws Throwable {
79+
System.out.println(stubProxyContext.getAnnotation());
8080
System.out.println("InvocationDispatcherImpl");
8181
return null;
8282
}

pom.xml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
<groupId>com.github.yungyu16.spring</groupId>
77
<artifactId>spring-boot-starter-proxy</artifactId>
8-
<version>1.0.0</version>
9-
<name>${project.groupId}:${project.artifactId}</name>
8+
<version>1.1.0</version>
9+
<name>${project.artifactId}</name>
1010
<description>将不可实例化的Interface动态代理后注册到Spring容器以便IOC,用于便捷的生成Local Stub</description>
1111
<url>https://github.com/yungyu16/version-maven-plugin.git</url>
1212
<licenses>
@@ -56,18 +56,12 @@
5656
<system>Github Issues</system>
5757
<url>https://github.com/yungyu16/spring-boot-starter-proxy/issues</url>
5858
</issueManagement>
59-
6059
<dependencies>
6160
<dependency>
6261
<groupId>org.projectlombok</groupId>
6362
<artifactId>lombok</artifactId>
6463
<scope>provided</scope>
6564
</dependency>
66-
<dependency>
67-
<groupId>org.springframework.boot</groupId>
68-
<artifactId>spring-boot-starter-test</artifactId>
69-
<scope>test</scope>
70-
</dependency>
7165
<dependency>
7266
<groupId>org.springframework.boot</groupId>
7367
<artifactId>spring-boot-starter</artifactId>
@@ -78,6 +72,11 @@
7872
<artifactId>spring-boot-starter-logging</artifactId>
7973
<optional>true</optional>
8074
</dependency>
75+
<dependency>
76+
<groupId>org.springframework.boot</groupId>
77+
<artifactId>spring-boot-starter-test</artifactId>
78+
<scope>test</scope>
79+
</dependency>
8180
</dependencies>
8281
<distributionManagement>
8382
<snapshotRepository>
@@ -91,6 +90,11 @@
9190
</distributionManagement>
9291
<build>
9392
<plugins>
93+
<plugin>
94+
<groupId>com.github.yungyu16.maven</groupId>
95+
<artifactId>version-maven-plugin</artifactId>
96+
<version>1.0.1</version>
97+
</plugin>
9498
<!-- Source -->
9599
<plugin>
96100
<groupId>org.apache.maven.plugins</groupId>

src/main/java/com/github/yungyu16/spring/proxy/StubBeanPostProcessor.java

Lines changed: 0 additions & 94 deletions
This file was deleted.

src/main/java/com/github/yungyu16/spring/proxy/StubContext.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/main/java/com/github/yungyu16/spring/proxy/StubBeanAutoConfiguration.java renamed to src/main/java/com/github/yungyu16/spring/stub/StubBeanAutoConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.github.yungyu16.spring.proxy;
1+
package com.github.yungyu16.spring.stub;
22

3+
import com.github.yungyu16.spring.stub.proxy.DefaultStubProxyFactory;
34
import org.springframework.context.annotation.Bean;
45
import org.springframework.context.annotation.Configuration;
56

@@ -18,4 +19,9 @@ public StubDefPostProcessor stubBeanFactoryPostProcessor() {
1819
public StubBeanPostProcessor stubBeanPostProcessor() {
1920
return new StubBeanPostProcessor();
2021
}
22+
23+
@Bean
24+
public DefaultStubProxyFactory defaultStubProxyFactory() {
25+
return new DefaultStubProxyFactory();
26+
}
2127
}

src/main/java/com/github/yungyu16/spring/proxy/StubBeanDefinitionRegistrar.java renamed to src/main/java/com/github/yungyu16/spring/stub/StubBeanDefinitionRegistrar.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.github.yungyu16.spring.proxy;
1+
package com.github.yungyu16.spring.stub;
22

3-
import com.github.yungyu16.spring.proxy.annotation.ProxyStubScan;
4-
import com.github.yungyu16.spring.proxy.support.ClassPathStubBeanDefinitionScanner;
3+
import com.github.yungyu16.spring.stub.annotation.ProxyStubScan;
4+
import com.github.yungyu16.spring.stub.support.ClassPathStubBeanDefinitionScanner;
55
import lombok.extern.slf4j.Slf4j;
66
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
77
import org.springframework.context.EnvironmentAware;
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.github.yungyu16.spring.stub;
2+
3+
import com.github.yungyu16.spring.stub.annotation.ProxyStub;
4+
import com.github.yungyu16.spring.stub.proxy.StubProxyFactory;
5+
import org.springframework.beans.BeansException;
6+
import org.springframework.beans.factory.BeanCreationNotAllowedException;
7+
import org.springframework.beans.factory.BeanFactory;
8+
import org.springframework.beans.factory.BeanFactoryAware;
9+
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter;
10+
import org.springframework.core.annotation.AnnotatedElementUtils;
11+
12+
/**
13+
* CreatedDate: 2020/11/24
14+
* Author: songjialin
15+
*/
16+
public class StubBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter implements BeanFactoryAware {
17+
private BeanFactory beanFactory;
18+
19+
@Override
20+
@SuppressWarnings("all")
21+
public Object postProcessBeforeInstantiation(Class<?> type, String name) throws BeansException {
22+
ProxyStub proxyStub = AnnotatedElementUtils.getMergedAnnotation(type, ProxyStub.class);
23+
if (proxyStub == null) {
24+
return null;
25+
}
26+
if (!type.isInterface()) {
27+
throw new BeanCreationNotAllowedException(name, type.getName() + " 不是Interface");
28+
}
29+
StubProxyFactory stubProxyFactory = getStubProxyFactory(proxyStub);
30+
return stubProxyFactory.createProxy(type, proxyStub);
31+
}
32+
33+
private StubProxyFactory getStubProxyFactory(ProxyStub proxyStub) {
34+
Class<? extends StubProxyFactory> factoryType = proxyStub.factoryType();
35+
return beanFactory.getBean(factoryType);
36+
}
37+
38+
@Override
39+
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
40+
this.beanFactory = beanFactory;
41+
}
42+
}

src/main/java/com/github/yungyu16/spring/proxy/StubDefPostProcessor.java renamed to src/main/java/com/github/yungyu16/spring/stub/StubDefPostProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.github.yungyu16.spring.proxy;
1+
package com.github.yungyu16.spring.stub;
22

3-
import com.github.yungyu16.spring.proxy.support.BeanDefinitionRegistryPostProcessorAdapter;
4-
import com.github.yungyu16.spring.proxy.support.ClassPathStubBeanDefinitionScanner;
3+
import com.github.yungyu16.spring.stub.support.BeanDefinitionRegistryPostProcessorAdapter;
4+
import com.github.yungyu16.spring.stub.support.ClassPathStubBeanDefinitionScanner;
55
import lombok.extern.slf4j.Slf4j;
66
import org.springframework.beans.BeansException;
77
import org.springframework.beans.factory.BeanFactory;

src/main/java/com/github/yungyu16/spring/proxy/annotation/ProxyStub.java renamed to src/main/java/com/github/yungyu16/spring/stub/annotation/ProxyStub.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package com.github.yungyu16.spring.proxy.annotation;
1+
package com.github.yungyu16.spring.stub.annotation;
22

3-
import com.github.yungyu16.spring.proxy.AbstractInvocationDispatcher;
3+
import com.github.yungyu16.spring.stub.proxy.AbstractInvocationDispatcher;
4+
import com.github.yungyu16.spring.stub.proxy.DefaultStubProxyFactory;
5+
import com.github.yungyu16.spring.stub.proxy.StubProxyFactory;
46
import org.springframework.core.annotation.AliasFor;
57
import org.springframework.stereotype.Component;
68

@@ -24,15 +26,23 @@
2426
String beanName() default "";
2527

2628
/**
27-
* 指定动态代理调用拦截器BeanType,用于从BeanFactory中按类型获取bean
29+
* 指定动态代理工厂,用于定制动态代理方案比如Cglib、ByteBuddy等
30+
* 默认使用基于JdkDynamicProxy代理并使用AbstractInvocationDispatcher拦截方法调用
31+
*
32+
* @return
33+
*/
34+
Class<? extends StubProxyFactory> factoryType() default DefaultStubProxyFactory.class;
35+
36+
/**
37+
* 指定JdkDynamicProxy调用拦截器BeanType,用于从BeanFactory中按类型获取bean
2838
*
2939
* @return
3040
*/
3141
@AliasFor("dispatcherType")
3242
Class<? extends AbstractInvocationDispatcher> value() default AbstractInvocationDispatcher.class;
3343

3444
/**
35-
* 指定动态代理调用拦截器BeanType,用于从BeanFactory中按类型获取bean
45+
* 指定JdkDynamicProxy调用拦截器BeanType,用于从BeanFactory中按类型获取bean
3646
*
3747
* @return
3848
*/

src/main/java/com/github/yungyu16/spring/proxy/annotation/ProxyStubScan.java renamed to src/main/java/com/github/yungyu16/spring/stub/annotation/ProxyStubScan.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.github.yungyu16.spring.proxy.annotation;
1+
package com.github.yungyu16.spring.stub.annotation;
22

3-
import com.github.yungyu16.spring.proxy.StubBeanDefinitionRegistrar;
3+
import com.github.yungyu16.spring.stub.StubBeanDefinitionRegistrar;
44
import org.springframework.context.annotation.Import;
55
import org.springframework.core.annotation.AliasFor;
66

0 commit comments

Comments
 (0)