|
@@ -30,7 +30,7 @@ public class SocketEventScanner implements BeanPostProcessor {
|
|
|
private final List<Class<? extends Annotation>> annotations =
|
|
|
Arrays.asList(OnConnect.class, OnDisconnect.class, OnEvent.class);
|
|
|
|
|
|
- private Class originalBeanClass;
|
|
|
+ private Class<?> originalBeanClass;
|
|
|
|
|
|
@Override
|
|
|
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
|
@@ -40,20 +40,10 @@ public class SocketEventScanner implements BeanPostProcessor {
|
|
|
factoryBean.setOriginalBeanClass(originalBeanClass);
|
|
|
SocketIONamespace socketIONamespace = factoryBean.getObject();
|
|
|
socketIONamespace.addListeners(bean, originalBeanClass);
|
|
|
- LOGGER.info("{} bean 手动 listeners added", beanName);
|
|
|
+ LOGGER.info("{} bean listeners added", beanName);
|
|
|
//注入属性
|
|
|
Field[] declaredFields = originalBeanClass.getDeclaredFields();
|
|
|
- for (Field declaredField : declaredFields) {
|
|
|
- if (declaredField.isAnnotationPresent(NamespaceReference.class)) {
|
|
|
- try {
|
|
|
- declaredField.setAccessible(true);
|
|
|
- declaredField.set(bean, socketIONamespace);
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ setNamespace(bean, socketIONamespace, declaredFields);
|
|
|
originalBeanClass = null;
|
|
|
}
|
|
|
|
|
@@ -64,9 +54,9 @@ public class SocketEventScanner implements BeanPostProcessor {
|
|
|
@Override
|
|
|
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
|
|
|
|
|
- final AtomicBoolean add = new AtomicBoolean();
|
|
|
+ final AtomicBoolean flag = new AtomicBoolean();
|
|
|
ReflectionUtils.doWithMethods(bean.getClass(),
|
|
|
- method -> add.set(true),
|
|
|
+ method -> flag.set(true),
|
|
|
method -> {
|
|
|
//匹配符合的方法
|
|
|
for (Class<? extends Annotation> annotationClass : annotations) {
|
|
@@ -76,9 +66,24 @@ public class SocketEventScanner implements BeanPostProcessor {
|
|
|
}
|
|
|
return false;
|
|
|
});
|
|
|
- if (add.get()) {
|
|
|
+ //找到赋值
|
|
|
+ if (flag.get()) {
|
|
|
originalBeanClass = bean.getClass();
|
|
|
}
|
|
|
return bean;
|
|
|
}
|
|
|
+
|
|
|
+ private void setNamespace(Object bean, SocketIONamespace socketIONamespace, Field[] declaredFields) {
|
|
|
+ for (Field declaredField : declaredFields) {
|
|
|
+ if (declaredField.isAnnotationPresent(NamespaceReference.class)) {
|
|
|
+ try {
|
|
|
+ declaredField.setAccessible(true);
|
|
|
+ declaredField.set(bean, socketIONamespace);
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|