Skip to content

Commit cebe328

Browse files
authored
Merge pull request #4 from zhongxunking/dev
增加获取目标对象入口+细节优化
2 parents 1a80866 + 9f8fb2f commit cebe328

35 files changed

Lines changed: 234 additions & 174 deletions

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,8 @@
289289
@TheFlowListener(flow = "demoFlow") // 特定流程监听器注解,属性flow指定被监听的流程名称
290290
public class DenoFlowListener {
291291
292-
@ListenNodeDecide // 监听节点选择事件
293-
public void listenNodeDecide(String node, TargetContext<Transfer> targetContext) { // 入参node表示被选择的节点,targetContext是目标上下文
292+
@ListenNodeDecided // 监听节点选择事件
293+
public void listenNodeDecided(String node, TargetContext<Transfer> targetContext) { // 入参node表示被选择的节点,targetContext是目标上下文
294294
// 一般监听节点选择事件的目的是用来更新目标对象的状态,因为当节点选择事件发生时,就表明已经执行完一个节点,即将进入到下一个节点,所以目标对象的状态应该修改为下一个状态
295295
}
296296
@@ -399,7 +399,7 @@
399399

400400
@Service(enableTx = true) // 服务定义注解(注意:此注解和spring的@Service注解名字一样,但是是两个不一样的注解),enableTx属性表示服务是否开启事务,默认不开启
401401
public class MyService {
402-
@ServiceCheck // 服务校验注解,进行业务校验(注意:此注解对应方法执行时不会开启事务,原因是这里面只是进行业务校验,而不是执行业务,所以没必要开启事务;同时如果开启了事务,但是当校验不通过还需要回滚事务,反而浪费资源
402+
@ServiceBefore // 服务前置处理(执行中不会有事务
403403
public void check(ServiceContext<XXXOrder, XXXResult> serviceContext) {
404404
// ServiceContext是服务上下文,可以通过它获取到传给服务引擎的order,也可以获取由服务引擎创建的result。
405405
// 进行业务校验(比如校验账户是否合法等等)

common/pom.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@
1313
<name>common</name>
1414

1515
<dependencies>
16-
<dependency>
17-
<groupId>org.springframework</groupId>
18-
<artifactId>spring-tx</artifactId>
19-
<scope>provided</scope>
20-
</dependency>
2116
<dependency>
2217
<groupId>org.apache.commons</groupId>
2318
<artifactId>commons-lang3</artifactId>
@@ -26,5 +21,11 @@
2621
<groupId>org.slf4j</groupId>
2722
<artifactId>slf4j-api</artifactId>
2823
</dependency>
24+
<dependency>
25+
<groupId>org.springframework</groupId>
26+
<artifactId>spring-tx</artifactId>
27+
<scope>provided</scope>
28+
<optional>true</optional>
29+
</dependency>
2930
</dependencies>
3031
</project>

event/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@
1818
<artifactId>common</artifactId>
1919
<version>${project.parent.version}</version>
2020
</dependency>
21+
<dependency>
22+
<groupId>org.springframework</groupId>
23+
<artifactId>spring-context</artifactId>
24+
<scope>provided</scope>
25+
</dependency>
2126
<dependency>
2227
<groupId>org.springframework.boot</groupId>
2328
<artifactId>spring-boot-autoconfigure</artifactId>
2429
<scope>provided</scope>
30+
<optional>true</optional>
2531
</dependency>
2632
</dependencies>
2733
</project>

event/src/main/java/org/bekit/event/annotation/Listen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
package org.bekit.event.annotation;
1010

11+
import org.bekit.event.extension.support.ClassListenResolver;
1112
import org.springframework.core.annotation.AliasFor;
1213

1314
import java.lang.annotation.*;
@@ -18,7 +19,7 @@
1819
@Documented
1920
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
2021
@Retention(RetentionPolicy.RUNTIME)
21-
@org.bekit.event.annotation.listener.Listen
22+
@org.bekit.event.annotation.listener.Listen(resolver = ClassListenResolver.class)
2223
public @interface Listen {
2324

2425
/**

event/src/main/java/org/bekit/event/annotation/listener/Listen.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
package org.bekit.event.annotation.listener;
1010

1111
import org.bekit.event.extension.ListenResolver;
12-
import org.bekit.event.extension.support.DefaultListenResolver;
1312

1413
import java.lang.annotation.*;
1514

@@ -22,9 +21,9 @@
2221
public @interface Listen {
2322

2423
/**
25-
* 监听解决器(默认DefaultListenResolver)
24+
* 监听解决器
2625
*/
27-
Class<? extends ListenResolver> resolver() default DefaultListenResolver.class;
26+
Class<? extends ListenResolver> resolver();
2827

2928
/**
3029
* 是否按照优先级升序

event/src/main/java/org/bekit/event/boot/EventBusConfiguration.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,27 @@
99
package org.bekit.event.boot;
1010

1111
import org.bekit.event.EventPublisher;
12-
import org.bekit.event.bus.EventBusHolder;
12+
import org.bekit.event.bus.EventBusesHolder;
1313
import org.bekit.event.extension.support.BizListenerType;
14-
import org.bekit.event.listener.ListenerHolder;
14+
import org.bekit.event.listener.ListenersHolder;
1515
import org.bekit.event.publisher.DefaultEventPublisher;
1616
import org.springframework.context.annotation.Bean;
1717
import org.springframework.context.annotation.Configuration;
18+
import org.springframework.context.annotation.DependsOn;
19+
import org.springframework.context.annotation.Import;
1820

1921
/**
2022
* 事件总线配置类
2123
* (非spring-boot项目需手动引入本配置类完成事件总线配置)
2224
*/
2325
@Configuration
26+
@Import({EventBusesHolder.class, ListenersHolder.class})
2427
public class EventBusConfiguration {
2528

2629
// 业务事件发布器
2730
@Bean
28-
public EventPublisher eventPublisher(EventBusHolder eventBusHolder) {
29-
return new DefaultEventPublisher(eventBusHolder.getEventBus(BizListenerType.class));
30-
}
31-
32-
// 事件总线持有器
33-
@Bean
34-
public EventBusHolder eventBusHolder() {
35-
return new EventBusHolder();
36-
}
37-
38-
// 监听器持有器
39-
@Bean
40-
public ListenerHolder listenerHolder() {
41-
return new ListenerHolder();
31+
@DependsOn("org.bekit.event.bus.EventBusesHolder") // 保证出现循环引用时不会出错
32+
public EventPublisher eventPublisher(EventBusesHolder eventBusesHolder) {
33+
return new DefaultEventPublisher(eventBusesHolder.getEventBus(BizListenerType.class));
4234
}
4335
}

event/src/main/java/org/bekit/event/bus/EventBusHolder.java renamed to event/src/main/java/org/bekit/event/bus/EventBusesHolder.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,32 @@
1010

1111
import org.bekit.event.extension.ListenerType;
1212
import org.bekit.event.listener.ListenerExecutor;
13-
import org.bekit.event.listener.ListenerHolder;
1413
import org.bekit.event.listener.ListenerParser;
14+
import org.bekit.event.listener.ListenersHolder;
1515
import org.springframework.beans.factory.annotation.Autowired;
16+
import org.springframework.stereotype.Component;
1617

1718
import javax.annotation.PostConstruct;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021

2122
/**
22-
* 事件总线持有器(会被注册到spring容器中)
23+
* 事件总线持有器
2324
*/
24-
public class EventBusHolder {
25+
@Component
26+
public class EventBusesHolder {
2527
@Autowired
26-
private ListenerHolder listenerHolder;
28+
private ListenersHolder listenersHolder;
2729
// 事件总线Map(key:总线类型)
2830
private Map<Class, EventBus> eventBusMap = new HashMap<>();
2931

3032
// 初始化(根据监听器类型创建相应类型的事件总线,spring自动执行)
3133
@PostConstruct
3234
public void init() {
33-
for (Class type : listenerHolder.getTypes()) {
35+
for (Class type : listenersHolder.getTypes()) {
3436
// 初始化事件总线
3537
EventBus eventBus = getEventBus(type);
36-
for (ListenerExecutor listenerExecutor : listenerHolder.getRequiredListenerExecutors(type)) {
38+
for (ListenerExecutor listenerExecutor : listenersHolder.getRequiredListenerExecutors(type)) {
3739
eventBus.register(listenerExecutor);
3840
}
3941
}

event/src/main/java/org/bekit/event/extension/support/BizListenerType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ public class BizListenerType implements ListenerType {
1818

1919
@Override
2020
public EventTypeResolver getResolver() {
21-
return DefaultEventTypeResolver.INSTANCE;
21+
return ClassEventTypeResolver.INSTANCE;
2222
}
2323
}

event/src/main/java/org/bekit/event/extension/support/DefaultEventTypeResolver.java renamed to event/src/main/java/org/bekit/event/extension/support/ClassEventTypeResolver.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
import org.bekit.event.extension.EventTypeResolver;
1212

1313
/**
14-
* 默认的事件类型解决器实现(事件类型就是事件对应的Class类)
14+
* Class事件类型解决器(事件类型就是事件对应的Class类)
1515
*/
16-
public class DefaultEventTypeResolver implements EventTypeResolver {
16+
public class ClassEventTypeResolver implements EventTypeResolver {
1717
/**
1818
* 实例
1919
*/
20-
public static final DefaultEventTypeResolver INSTANCE = new DefaultEventTypeResolver();
20+
public static final ClassEventTypeResolver INSTANCE = new ClassEventTypeResolver();
2121

2222
@Override
2323
public Object resolve(Object event) {

event/src/main/java/org/bekit/event/extension/support/DefaultListenResolver.java renamed to event/src/main/java/org/bekit/event/extension/support/ClassListenResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
import java.lang.reflect.Method;
1515

1616
/**
17-
* 默认的监听解决器实现(监听方法只能有一个入参,事件类型就是入参的Class类)
17+
* Class监听解决器(监听方法只能有一个入参,事件类型就是入参的Class类)
1818
*/
19-
public class DefaultListenResolver implements ListenResolver {
19+
public class ClassListenResolver implements ListenResolver {
2020
// 监听的事件类型
2121
private Class eventType;
2222

0 commit comments

Comments
 (0)