From 087511862a295eda0cf808a92f2ed2df348d54ff Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期五, 26 五月 2023 19:00:23 +0800
Subject: [PATCH] 动态表单
---
Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
index e69de29..9fa68ec 100644
--- a/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
+++ b/Source/UBCS/ubcs-service/ubcs-webservice/src/main/java/com/vci/ubcs/webservice/config/VciCxfPublishConfig.java
@@ -0,0 +1,88 @@
+package com.vci.ubcs.webservice.config;
+
+import com.alibaba.cloud.commons.lang.StringUtils;
+import com.vci.ubcs.starter.web.util.ApplicationContextProvider;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+import com.vci.ubcs.webservice.annotation.VciWebservice;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.cxf.Bus;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Map;
+
+/**
+ * 鍙戝竷鏈嶅姟绫�
+ * @author weidy
+ * @date 2020/3/27
+ */
+@Configuration
+@Slf4j
+public class VciCxfPublishConfig {
+
+ /**
+ * 娉ㄥ叆cxf鐨刡us
+ */
+ @Autowired(required = false)
+ private Bus bus;
+
+
+
+
+ /**
+ * 鍙戝竷绔欑偣鏈嶅姟
+ * @return 绔欑偣鏈嶅姟
+ */
+ @Bean
+ public void autoPushCxf(){
+
+ log.info("寮�濮嬭繘琛岃嚜鍔ㄥ彂甯僿ebService鎺ュ彛");
+ Map<String, Object> beansWithAnnotation = ApplicationContextProvider.getApplicationContext().getBeansWithAnnotation(VciWebservice.class);
+ if(!CollectionUtils.isEmpty(beansWithAnnotation)){
+ //鎵捐繖浜沚ean鐨�
+ beansWithAnnotation.forEach((beanName,bean)->{
+ Class<?> targetClass = AopUtils.getTargetClass(bean);
+ VciWebservice annotation = targetClass.getDeclaredAnnotation(VciWebservice.class);
+ if(annotation == null){
+ targetClass.getAnnotation(VciWebservice.class);
+ }
+ if(annotation!=null){
+ //鎴戜滑鍘绘壘璺緞鍜屽悕绉�
+ String name = annotation.value();
+ if(StringUtils.isBlank(name)){
+ name = VciBaseUtil.toLowForFirst(targetClass.getSimpleName()).replace(".class","");
+ }
+ String path = annotation.path();
+ if(StringUtils.isBlank(path)){
+ path = "/" + name;
+ }
+ //娉ㄥ唽
+ EndpointImpl endpoint = new EndpointImpl(bus,bean);
+ endpoint.publish(path);
+ log.info(String.format("鍙戝竷鎺ュ彛鍦板潃锛歔%s]", path));
+ registerBean(endpoint,name + "_EndPoint");
+ }
+ });
+ }
+ log.info("weBservice鎺ュ彛鑷姩鍙戝竷缁撴潫");
+ }
+
+ /**
+ * 鍔ㄦ�佹敞鍏ean
+ * @param singletonObject 娉ㄥ叆瀵硅薄
+ * @param beanName bean鍚嶇О
+ */
+ public void registerBean(Object singletonObject,String beanName) {
+
+ //鑾峰彇BeanFactory
+ DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) ApplicationContextProvider.getApplicationContext().getAutowireCapableBeanFactory();
+
+ //鍔ㄦ�佹敞鍐宐ean.
+ defaultListableBeanFactory.registerSingleton(beanName, singletonObject);
+ }
+}
--
Gitblit v1.9.3