mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-14 06:18:16 +00:00
feat[boot]: 支持spring boot的自动化配置
This commit is contained in:
1 parent
47be79785e
commit
44e4782641
37 files changed
+657
-219
No files matched your search
@@ -13,7 +13,6 @@
|
||||
|
||||
package com.zfoo.storage;
|
||||
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
import com.zfoo.scheduler.model.StopWatch;
|
||||
import com.zfoo.storage.interpreter.IResourceReader;
|
||||
import com.zfoo.storage.manager.IStorageManager;
|
||||
@@ -24,9 +23,7 @@ import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ApplicationContextEvent;
|
||||
import org.springframework.context.event.ContextClosedEvent;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.context.support.ConversionServiceFactoryBean;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
|
||||
/**
|
||||
* @author jaysunxiao
|
||||
@@ -44,8 +41,6 @@ public class StorageContext implements ApplicationListener<ApplicationContextEve
|
||||
|
||||
private IStorageManager storageManager;
|
||||
|
||||
private ConversionService conversionService;
|
||||
|
||||
public static StorageContext getStorageContext() {
|
||||
return instance;
|
||||
}
|
||||
@@ -58,10 +53,6 @@ public class StorageContext implements ApplicationListener<ApplicationContextEve
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static ConversionService getConversionService() {
|
||||
return instance.conversionService;
|
||||
}
|
||||
|
||||
public static IResourceReader getResourceReader() {
|
||||
return instance.resourceReader;
|
||||
}
|
||||
@@ -78,7 +69,6 @@ public class StorageContext implements ApplicationListener<ApplicationContextEve
|
||||
// 初始化上下文
|
||||
StorageContext.instance = this;
|
||||
instance.applicationContext = event.getApplicationContext();
|
||||
instance.conversionService = (ConversionService) applicationContext.getBean(StringUtils.uncapitalize(ConversionServiceFactoryBean.class.getName()));
|
||||
instance.resourceReader = applicationContext.getBean(IResourceReader.class);
|
||||
instance.storageManager = applicationContext.getBean(IStorageManager.class);
|
||||
|
||||
|
||||
@@ -16,13 +16,14 @@ package com.zfoo.storage.interpreter;
|
||||
import com.zfoo.protocol.exception.RunException;
|
||||
import com.zfoo.protocol.util.ReflectionUtils;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
import com.zfoo.storage.StorageContext;
|
||||
import com.zfoo.storage.model.anno.Id;
|
||||
import com.zfoo.storage.strategy.*;
|
||||
import com.zfoo.storage.util.CellUtils;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import org.springframework.context.support.ConversionServiceFactoryBean;
|
||||
import org.springframework.core.convert.TypeDescriptor;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -40,6 +41,20 @@ public class ExcelResourceReader implements IResourceReader {
|
||||
|
||||
private static final TypeDescriptor TYPE_DESCRIPTOR = TypeDescriptor.valueOf(String.class);
|
||||
|
||||
private static final ConversionServiceFactoryBean conversionServiceFactoryBean = new ConversionServiceFactoryBean();
|
||||
|
||||
static {
|
||||
var converters = new HashSet<>();
|
||||
converters.add(new JsonToArrayConverter());
|
||||
converters.add(new JsonToMapConverter());
|
||||
converters.add(new JsonToObjectConverter());
|
||||
converters.add(new StringToClassConverter());
|
||||
converters.add(new StringToDateConverter());
|
||||
converters.add(new StringToMapConverter());
|
||||
conversionServiceFactoryBean.setConverters(converters);
|
||||
conversionServiceFactoryBean.afterPropertiesSet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> List<T> read(InputStream inputStream, Class<T> clazz) {
|
||||
var wb = createWorkbook(inputStream, clazz);
|
||||
@@ -90,7 +105,7 @@ public class ExcelResourceReader implements IResourceReader {
|
||||
private void inject(Object instance, Field field, String content) {
|
||||
try {
|
||||
var targetType = new TypeDescriptor(field);
|
||||
var value = StorageContext.getConversionService().convert(content, TYPE_DESCRIPTOR, targetType);
|
||||
var value = conversionServiceFactoryBean.getObject().convert(content, TYPE_DESCRIPTOR, targetType);
|
||||
ReflectionUtils.makeAccessible(field);
|
||||
ReflectionUtils.setField(field, instance, value);
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -19,17 +19,12 @@ import com.zfoo.storage.StorageContext;
|
||||
import com.zfoo.storage.interpreter.ExcelResourceReader;
|
||||
import com.zfoo.storage.manager.StorageManager;
|
||||
import com.zfoo.storage.model.config.StorageConfig;
|
||||
import com.zfoo.storage.strategy.*;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.xml.BeanDefinitionParser;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.context.support.ConversionServiceFactoryBean;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author jaysunxiao
|
||||
* @version 3.0
|
||||
@@ -97,20 +92,6 @@ public class StorageDefinitionParser implements BeanDefinitionParser {
|
||||
name = StringUtils.uncapitalize(clazz.getName());
|
||||
builder = BeanDefinitionBuilder.rootBeanDefinition(clazz);
|
||||
registry.registerBeanDefinition(name, builder.getBeanDefinition());
|
||||
|
||||
// 注入ConversionServiceFactoryBean
|
||||
clazz = ConversionServiceFactoryBean.class;
|
||||
name = StringUtils.uncapitalize(clazz.getName());
|
||||
builder = BeanDefinitionBuilder.rootBeanDefinition(clazz);
|
||||
List<Object> converters = new ArrayList<>();
|
||||
converters.add(new JsonToArrayConverter());
|
||||
converters.add(new JsonToMapConverter());
|
||||
converters.add(new JsonToObjectConverter());
|
||||
converters.add(new StringToClassConverter());
|
||||
converters.add(new StringToDateConverter());
|
||||
converters.add(new StringToMapConverter());
|
||||
builder.addPropertyValue("converters", converters);
|
||||
registry.registerBeanDefinition(name, builder.getBeanDefinition());
|
||||
}
|
||||
|
||||
private void resolvePlaceholder(String attributeName, String fieldName, BeanDefinitionBuilder builder, Element element, ParserContext parserContext) {
|
||||
|
||||
Reference in new issue
Block a user