diff --git a/pom.xml b/pom.xml
index 6c59803a875e5e60ca30b4297b7699f354cddbb3..49ecfbab973d4fa4f967f660b62650319bc7fa2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,9 @@
         UTF-8
         3.8.1
 
+        1.18.20
+        2.0.9
+
         3.1.0
         3.1.0
         3.1.0
@@ -70,6 +73,27 @@
         
     
 
+    
+        
+            org.projectlombok
+            lombok
+            ${lombok.version}
+            provided
+            true
+        
+
+        
+            org.powermock
+            powermock-api-mockito2
+            ${powermock.version}
+        
+        
+            org.powermock
+            powermock-module-junit4
+            ${powermock.version}
+        
+    
+
     
         
             
diff --git a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/PluginOneselfInteractive.java b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/PluginOneselfInteractive.java
index dfd07faeeb4f2456ea7d0db2b670b93d27474ced..2723562b3900b353b4b1356d7fc15c7dda37774a 100644
--- a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/PluginOneselfInteractive.java
+++ b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/PluginOneselfInteractive.java
@@ -20,6 +20,7 @@ import com.gitee.starblues.common.PackageStructure;
 import com.gitee.starblues.core.descriptor.DevPluginDescriptorLoader;
 import com.gitee.starblues.core.descriptor.InsidePluginDescriptor;
 import com.gitee.starblues.core.descriptor.PluginDescriptorLoader;
+import com.gitee.starblues.core.descriptor.decrypt.EmptyPluginDescriptorDecrypt;
 import com.gitee.starblues.core.launcher.plugin.PluginInteractive;
 import com.gitee.starblues.integration.AutoIntegrationConfiguration;
 import com.gitee.starblues.integration.IntegrationConfiguration;
@@ -80,7 +81,8 @@ public class PluginOneselfInteractive implements PluginInteractive {
     }
 
     private InsidePluginDescriptor createPluginDescriptor(){
-        try (PluginDescriptorLoader pluginDescriptorLoader = new DevPluginDescriptorLoader()){
+        EmptyPluginDescriptorDecrypt descriptorDecrypt = new EmptyPluginDescriptorDecrypt();
+        try (PluginDescriptorLoader pluginDescriptorLoader = new DevPluginDescriptorLoader(descriptorDecrypt)){
             Path classesPath = Paths.get(this.getClass().getResource("/").toURI()).getParent();
             String metaInf = FilesUtils.joiningFilePath(classesPath.toString(), PackageStructure.META_INF_NAME);
             InsidePluginDescriptor pluginDescriptor = pluginDescriptorLoader.load(Paths.get(metaInf));
diff --git a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/realize/DefaultMainEnvironmentProvider.java b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/realize/DefaultMainEnvironmentProvider.java
index 8487d3664dd6c607272685cccc47dd56471c2aaf..f71a363c300da964609be23baf3ff280501803e7 100644
--- a/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/realize/DefaultMainEnvironmentProvider.java
+++ b/spring-brick-bootstrap/src/main/java/com/gitee/starblues/bootstrap/realize/DefaultMainEnvironmentProvider.java
@@ -18,7 +18,9 @@ package com.gitee.starblues.bootstrap.realize;
 
 import com.gitee.starblues.loader.utils.ObjectUtils;
 import com.gitee.starblues.spring.MainApplicationContext;
+import com.gitee.starblues.utils.MapValueGetter;
 
+import java.util.Collections;
 import java.util.Map;
 import java.util.function.Function;
 
@@ -54,57 +56,32 @@ public class DefaultMainEnvironmentProvider implements MainEnvironmentProvider{
 
     @Override
     public String getString(String name) {
-        return getValue(name, String::valueOf);
+        return getMapValueGetter(name).getString(name);
     }
 
     @Override
     public Integer getInteger(String name) {
-        return getValue(name, value -> {
-            if(value instanceof Integer){
-                return (Integer) value;
-            }
-            return Integer.parseInt(String.valueOf(value));
-        });
+        return getMapValueGetter(name).getInteger(name);
     }
 
     @Override
     public Long getLong(String name) {
-       return getValue(name, value -> {
-            if(value instanceof Long){
-                return (Long) value;
-            }
-            return Long.parseLong(String.valueOf(value));
-       });
+        return getMapValueGetter(name).getLong(name);
     }
 
     @Override
     public Double getDouble(String name) {
-        return getValue(name, value -> {
-            if(value instanceof Double){
-                return (Double) value;
-            }
-            return Double.parseDouble(String.valueOf(value));
-        });
+        return getMapValueGetter(name).getDouble(name);
     }
 
     @Override
     public Float getFloat(String name) {
-        return getValue(name, value -> {
-            if(value instanceof Float){
-                return (Float) value;
-            }
-            return Float.parseFloat(String.valueOf(value));
-        });
+        return getMapValueGetter(name).getFloat(name);
     }
 
     @Override
     public Boolean getBoolean(String name) {
-        return getValue(name, value -> {
-            if(value instanceof Boolean){
-                return (Boolean) value;
-            }
-            return Boolean.parseBoolean(String.valueOf(value));
-        });
+        return getMapValueGetter(name).getBoolean(name);
     }
 
     @Override
@@ -112,12 +89,19 @@ public class DefaultMainEnvironmentProvider implements MainEnvironmentProvider{
         return mainApplicationContext.getConfigurableEnvironment();
     }
 
-    private  T getValue(String name, Function