xiejun
2024-11-01 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package org.springblade.core.tool.convert;
 
import org.springframework.boot.convert.ApplicationConversionService;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.lang.Nullable;
import org.springframework.util.StringValueResolver;
 
/**
 * 类型 转换 服务,添加了 IEnum 转换
 *
 * @author L.cm
 */
public class BladeConversionService extends ApplicationConversionService {
    @Nullable
    private static volatile BladeConversionService SHARED_INSTANCE;
 
    public BladeConversionService() {
        this(null);
    }
 
    public BladeConversionService(@Nullable StringValueResolver embeddedValueResolver) {
        super(embeddedValueResolver);
        super.addConverter(new EnumToStringConverter());
        super.addConverter(new StringToEnumConverter());
    }
 
    /**
     * Return a shared default application {@code ConversionService} instance, lazily
     * building it once needed.
     * <p>
     * Note: This method actually returns an {@link BladeConversionService}
     * instance. However, the {@code ConversionService} signature has been preserved for
     * binary compatibility.
     * @return the shared {@code BladeConversionService} instance (never{@code null})
     */
    public static GenericConversionService getInstance() {
        BladeConversionService sharedInstance = BladeConversionService.SHARED_INSTANCE;
        if (sharedInstance == null) {
            synchronized (BladeConversionService.class) {
                sharedInstance = BladeConversionService.SHARED_INSTANCE;
                if (sharedInstance == null) {
                    sharedInstance = new BladeConversionService();
                    BladeConversionService.SHARED_INSTANCE = sharedInstance;
                }
            }
        }
        return sharedInstance;
    }
 
}