diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/config/WarehouseProperties.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/config/WarehouseProperties.java
index f0c7548ae26..3dc69dfd84c 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/config/WarehouseProperties.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/config/WarehouseProperties.java
@@ -24,209 +24,62 @@
 
 /**
  * Data warehouse configuration properties
+ * @param entrance Data entry configuration properties
+ * @param store  Datastore configuration properties
  */
 @ConfigurationProperties(prefix = "warehouse")
-public class WarehouseProperties {
-
-    /**
-     *  Data entry configuration properties
-     */
-    private EntranceProperties entrance;
-
-    /**
-     * Datastore configuration properties
-     */
-    private StoreProperties store;
-
-    public EntranceProperties getEntrance() {
-        return entrance;
-    }
-
-    public void setEntrance(EntranceProperties entrance) {
-        this.entrance = entrance;
-    }
-
-    public StoreProperties getStore() {
-        return store;
-    }
-
-    public void setStore(StoreProperties store) {
-        this.store = store;
-    }
+public record WarehouseProperties (
+    EntranceProperties entrance,
+    StoreProperties store
+) {
 
     /**
      * Data entry configuration properties
      * The entrance can be to obtain data from message middleware such as kafka rabbitmq rocketmq
      */
-    public static class EntranceProperties {
-
-        /**
-         * kafka configuration information
-         */
-        private KafkaProperties kafka;
-
-        public KafkaProperties getKafka() {
-            return kafka;
-        }
-
-        public void setKafka(KafkaProperties kafka) {
-            this.kafka = kafka;
-        }
-
+    public record EntranceProperties(
+        KafkaProperties kafka
+    ){
         /**
          * kafka configuration information
          */
-        public static class KafkaProperties {
-            /**
-             * Whether kafka data entry is started
-             */
-            private boolean enabled = true;
-
-            /**
-             * kafka connection server url
-             */
-            private String servers = "127.0.0.1:9092";
-            /**
-             * Topic name to receive data
-             */
-            private String topic;
-            /**
-             * Consumer group ID
-             */
-            private String groupId;
-
-            public boolean isEnabled() {
-                return enabled;
-            }
-
-            public String getServers() {
-                return servers;
-            }
-
-            public String getTopic() {
-                return topic;
-            }
-
-            public String getGroupId() {
-                return groupId;
-            }
-        }
-
+        public record KafkaProperties(
+                @DefaultValue("true") boolean enabled,
+                @DefaultValue("127.0.0.1:9092") String servers,
+                String topic,
+                String groupId
+        ){}
     }
 
-
     /**
      * Scheduling data export configuration properties
+     * @param jpa use mysql/h2 jpa store metrics history data
+     * @param memory Memory storage configuration information
+     * @param influxdb influxdb configuration information
+     * @param redis redis configuration information
+     * @param victoriaMetrics VictoriaMetrics Properties
+     * @param tdEngine TdEngine configuration information
+     * @param iotDb IoTDB configuration information
+     * @param greptime GrepTimeDB Config
      */
-    public static class StoreProperties {
-
-        /**
-         * use mysql/h2 jpa store metrics history data
-         */
-        private JpaProperties jpa;
-
-        /**
-         * Memory storage configuration information
-         */
-        private MemoryProperties memory;
-
-        /**
-         * influxdb configuration information
-         */
-        private InfluxdbProperties influxdb;
-        /**
-         * redis configuration information
-         */
-        private RedisProperties redis;
-        /**
-         * VictoriaMetrics Properties
-         */
-        private VictoriaMetricsProperties victoriaMetrics;
-        /**
-         * TdEngine configuration information
-         */
-        private TdEngineProperties tdEngine;
-        /**
-         * IoTDB configuration information
-         */
-        private IotDbProperties iotDb;
-        /**
-         * GrepTimeDB Config
-         */
-        private GreptimeProperties greptime;
-
-        public JpaProperties getJpa() {
-            return jpa;
-        }
-
-        public void setJpa(JpaProperties jpa) {
-            this.jpa = jpa;
-        }
-
-        public MemoryProperties getMemory() {
-            return memory;
-        }
-
-        public void setMemory(MemoryProperties memory) {
-            this.memory = memory;
-        }
-
-        public InfluxdbProperties getInfluxdb() {
-            return influxdb;
-        }
-
-        public void setInfluxdb(InfluxdbProperties influxdb) {
-            this.influxdb = influxdb;
-        }
-
-        public RedisProperties getRedis() {
-            return redis;
-        }
-
-        public void setRedis(RedisProperties redis) {
-            this.redis = redis;
-        }
-
-        public VictoriaMetricsProperties getVictoriaMetrics() {
-            return victoriaMetrics;
-        }
-
-        public void setVictoriaMetrics(VictoriaMetricsProperties victoriaMetrics) {
-            this.victoriaMetrics = victoriaMetrics;
-        }
-
-        public TdEngineProperties getTdEngine() {
-            return tdEngine;
-        }
-
-        public void setTdEngine(TdEngineProperties tdEngine) {
-            this.tdEngine = tdEngine;
-        }
-
-        public IotDbProperties getIotDb() {
-            return iotDb;
-        }
-
-        public void setIotDb(IotDbProperties iotDb) {
-            this.iotDb = iotDb;
-        }
-
-        public GreptimeProperties getGreptime() {
-            return greptime;
-        }
-
-        public void setGreptime(GreptimeProperties greptime) {
-            this.greptime = greptime;
-        }
-
+    public record StoreProperties(
+        JpaProperties jpa,
+        MemoryProperties memory,
+        InfluxdbProperties influxdb,
+        RedisProperties redis,
+        VictoriaMetricsProperties victoriaMetrics,
+        TdEngineProperties tdEngine,
+        IotDbProperties iotDb,
+        GreptimeProperties greptime
+    ){
         /**
          * Memory storage configuration information
          * @param enabled Whether memory data storage is enabled
          * @param initSize Memory storage map initialization size
          */
         public record MemoryProperties(
-            @DefaultValue("true") boolean enabled,
-            @DefaultValue("1024") Integer initSize
+                @DefaultValue("true") boolean enabled,
+                @DefaultValue("1024") Integer initSize
         ){}
 
         /**
@@ -236,21 +89,21 @@ public record MemoryProperties(
          * @param maxHistoryRecordNum The maximum number of history records retained
          */
         public record JpaProperties(
-            @DefaultValue("true") boolean enabled,
-            @DefaultValue("1h") String expireTime,
-            @DefaultValue("20000") Integer maxHistoryRecordNum
+                @DefaultValue("true") boolean enabled,
+                @DefaultValue("1h") String expireTime,
+                @DefaultValue("20000") Integer maxHistoryRecordNum
         ) {}
 
         /**
          * Influxdb configuration information
          */
         public record InfluxdbProperties(
-            @DefaultValue("false") boolean enabled,
-            String serverUrl,
-            String username,
-            String password,
-            @DefaultValue("30d") String expireTime,
-            @DefaultValue("1") int replication) {}
+                @DefaultValue("false") boolean enabled,
+                String serverUrl,
+                String username,
+                String password,
+                @DefaultValue("30d") String expireTime,
+                @DefaultValue("1") int replication) {}
 
         /**
          *
@@ -262,32 +115,31 @@ public record InfluxdbProperties(
          * @param tableStrColumnDefineMaxLength auto create table's string column define max length : NCHAR(200)
          */
         public record TdEngineProperties(
-            @DefaultValue("false") boolean enabled,
-            @DefaultValue("jdbc:TAOS-RS://localhost:6041/demo") String url,
-            @DefaultValue("com.taosdata.jdbc.rs.RestfulDriver") String driverClassName,
-            String username,
-            String password,
-            @DefaultValue("200") int tableStrColumnDefineMaxLength) {}
+                @DefaultValue("false") boolean enabled,
+                @DefaultValue("jdbc:TAOS-RS://localhost:6041/demo") String url,
+                @DefaultValue("com.taosdata.jdbc.rs.RestfulDriver") String driverClassName,
+                String username,
+                String password,
+                @DefaultValue("200") int tableStrColumnDefineMaxLength) {}
 
         /**
          * Victoriametrics configuration information
          */
         public record VictoriaMetricsProperties(
-            @DefaultValue("false") boolean enabled,
-            @DefaultValue("http://localhost:8428") String url,
-            String username,
-            String password)
-        {}
+                @DefaultValue("false") boolean enabled,
+                @DefaultValue("http://localhost:8428") String url,
+                String username,
+                String password) {}
 
         /**
          * Redis configuration information
          */
         public record RedisProperties(
-            @DefaultValue("false") boolean enabled,
-            @DefaultValue("127.0.0.1") String host,
-            @DefaultValue("6379") Integer port,
-            String password,
-            @DefaultValue("0") Integer db) {}
+                @DefaultValue("false") boolean enabled,
+                @DefaultValue("127.0.0.1") String host,
+                @DefaultValue("6379") Integer port,
+                String password,
+                @DefaultValue("0") Integer db) {}
 
         /**
          * IotDB configuration information
@@ -296,31 +148,29 @@ public record RedisProperties(
          * @param expireTime save data expire time(ms),-1 means it never expires Data storage time (unit: ms,-1 means never expire)
          *                   Note: Why is String used here instead of Long? At present, the set ttl of IoTDB only supports milliseconds as a unit,
          *                   and other units may be added later, so the String type is used for compatibility Data storage time (unit: ms, -1 means never expires)
-         *
          *                   Note: Why use String instead of Long here? Currently, IoTDB's set ttl only supports milliseconds as the unit.
          *                   Other units may be added later. In order to be compatible with the future, the String type is used.
          */
         public record IotDbProperties(
-            @DefaultValue("false") boolean enabled,
-            @DefaultValue("127.0.0.1") String host,
-            @DefaultValue("6667") Integer rpcPort,
-            String username,
-            String password,
-            List<String> nodeUrls,
-            ZoneId zoneId,
-            IotDbVersion version,
-            long queryTimeoutInMs,
-            String expireTime) {}
+                @DefaultValue("false") boolean enabled,
+                @DefaultValue("127.0.0.1") String host,
+                @DefaultValue("6667") Integer rpcPort,
+                String username,
+                String password,
+                List<String> nodeUrls,
+                ZoneId zoneId,
+                IotDbVersion version,
+                long queryTimeoutInMs,
+                String expireTime) {}
 
         /**
          * GrepTimeDB configuration information
          */
         public record GreptimeProperties(
-            @DefaultValue("false") boolean enabled,
-            @DefaultValue("127.0.0.1:4001") String endpoint,
-            String username,
-            String password) {}
-
+                @DefaultValue("false") boolean enabled,
+                @DefaultValue("127.0.0.1:4001") String endpoint,
+                String username,
+                String password) {}
     }
 
 }
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryGrepTimeDbDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryGrepTimeDbDataStorage.java
index e9cd2606765..7e408c97b1b 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryGrepTimeDbDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryGrepTimeDbDataStorage.java
@@ -84,7 +84,7 @@ public class HistoryGrepTimeDbDataStorage extends AbstractHistoryDataStorage {
     private GreptimeDB greptimeDb;
 
     public HistoryGrepTimeDbDataStorage(WarehouseProperties properties) {
-        this.serverAvailable = this.initDbSession(properties.getStore().getGreptime());
+        this.serverAvailable = this.initDbSession(properties.store().greptime());
     }
 
     private boolean initDbSession(WarehouseProperties.StoreProperties.GreptimeProperties properties) {
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryInfluxdbDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryInfluxdbDataStorage.java
index a786e4f856b..d86f9beb5b7 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryInfluxdbDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryInfluxdbDataStorage.java
@@ -93,7 +93,7 @@ public void initInfluxDb(WarehouseProperties properties) {
         client.sslSocketFactory(defaultSslSocketFactory(), defaultTrustManager());
         client.hostnameVerifier(noopHostnameVerifier());
 
-        WarehouseProperties.StoreProperties.InfluxdbProperties influxdbProperties = properties.getStore().getInfluxdb();
+        WarehouseProperties.StoreProperties.InfluxdbProperties influxdbProperties = properties.store().influxdb();
         this.influxDb = InfluxDBFactory.connect(influxdbProperties.serverUrl(), influxdbProperties.username(), influxdbProperties.password(), client);
         // Close it if your application is terminating, or you are not using it anymore.
         Runtime.getRuntime().addShutdownHook(new Thread(influxDb::close));
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryIotDbDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryIotDbDataStorage.java
index b5665104ae6..bbafe19a95c 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryIotDbDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryIotDbDataStorage.java
@@ -88,7 +88,7 @@ public class HistoryIotDbDataStorage extends AbstractHistoryDataStorage {
     private long queryTimeoutInMs;
 
     public HistoryIotDbDataStorage(WarehouseProperties properties) {
-        this.serverAvailable = this.initIotDbSession(properties.getStore().getIotDb());
+        this.serverAvailable = this.initIotDbSession(properties.store().iotDb());
     }
 
     private boolean initIotDbSession(WarehouseProperties.StoreProperties.IotDbProperties properties) {
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryJpaDatabaseDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryJpaDatabaseDataStorage.java
index 9324ccc9f88..942f203b33a 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryJpaDatabaseDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryJpaDatabaseDataStorage.java
@@ -64,7 +64,7 @@ public class HistoryJpaDatabaseDataStorage extends AbstractHistoryDataStorage {
 
     public HistoryJpaDatabaseDataStorage(WarehouseProperties properties,
                                          HistoryDao historyDao) {
-        this.jpaProperties = properties.getStore().getJpa();
+        this.jpaProperties = properties.store().jpa();
         this.serverAvailable = true;
         this.historyDao = historyDao;
         expiredDataCleaner();
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java
index 1fff1a401f1..4b96694b261 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryTdEngineDataStorage.java
@@ -73,12 +73,12 @@ public class HistoryTdEngineDataStorage extends AbstractHistoryDataStorage {
     private final int tableStrColumnDefineMaxLength;
 
     public HistoryTdEngineDataStorage(WarehouseProperties properties) {
-        if (properties == null || properties.getStore() == null || properties.getStore().getTdEngine() == null) {
+        if (properties == null || properties.store() == null || properties.store().tdEngine() == null) {
             log.error("init error, please config Warehouse TdEngine props in application.yml");
             throw new IllegalArgumentException("please config Warehouse TdEngine props");
         }
-        tableStrColumnDefineMaxLength = properties.getStore().getTdEngine().tableStrColumnDefineMaxLength();
-        serverAvailable = initTdEngineDatasource(properties.getStore().getTdEngine());
+        tableStrColumnDefineMaxLength = properties.store().tdEngine().tableStrColumnDefineMaxLength();
+        serverAvailable = initTdEngineDatasource(properties.store().tdEngine());
     }
 
     private boolean initTdEngineDatasource(WarehouseProperties.StoreProperties.TdEngineProperties tdEngineProperties) {
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryVictoriaMetricsDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryVictoriaMetricsDataStorage.java
index 6033e43972c..e2279618bcc 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryVictoriaMetricsDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/HistoryVictoriaMetricsDataStorage.java
@@ -92,12 +92,12 @@ public class HistoryVictoriaMetricsDataStorage extends AbstractHistoryDataStorag
     private final RestTemplate restTemplate;
 
     public HistoryVictoriaMetricsDataStorage(WarehouseProperties properties, RestTemplate restTemplate) {
-        if (properties == null || properties.getStore() == null || properties.getStore().getVictoriaMetrics() == null) {
+        if (properties == null || properties.store() == null || properties.store().victoriaMetrics() == null) {
             log.error("init error, please config Warehouse victoriaMetrics props in application.yml");
             throw new IllegalArgumentException("please config Warehouse victoriaMetrics props");
         }
         this.restTemplate = restTemplate;
-        victoriaMetricsProp = properties.getStore().getVictoriaMetrics();
+        victoriaMetricsProp = properties.store().victoriaMetrics();
         serverAvailable = checkVictoriaMetricsDatasourceAvailable();
     }
 
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeMemoryDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeMemoryDataStorage.java
index 3f9d1defc43..94beb837c83 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeMemoryDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeMemoryDataStorage.java
@@ -46,9 +46,9 @@ public class RealTimeMemoryDataStorage extends AbstractRealTimeDataStorage {
 
     public RealTimeMemoryDataStorage(WarehouseProperties properties) {
         int initSize = DEFAULT_INIT_SIZE;
-        if (properties != null && properties.getStore() != null && properties.getStore().getMemory() != null
-                && properties.getStore().getMemory().initSize() != null) {
-            initSize = properties.getStore().getMemory().initSize();
+        if (properties != null && properties.store() != null && properties.store().memory() != null
+                && properties.store().memory().initSize() != null) {
+            initSize = properties.store().memory().initSize();
         }
         monitorMetricsDataMap = new ConcurrentHashMap<>(initSize);
         this.serverAvailable = true;
diff --git a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeRedisDataStorage.java b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeRedisDataStorage.java
index 7dcefb05fb0..5d8c1459b1e 100644
--- a/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeRedisDataStorage.java
+++ b/warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/RealTimeRedisDataStorage.java
@@ -55,7 +55,7 @@ public RealTimeRedisDataStorage(WarehouseProperties properties) {
     }
 
     private Integer getRedisSelectDb(WarehouseProperties properties){
-        return properties.getStore().getRedis().db();
+        return properties.store().redis().db();
     }
 
     @Override
@@ -96,11 +96,11 @@ public void saveData(CollectRep.MetricsData metricsData) {
     }
 
     private boolean initRedisClient(WarehouseProperties properties) {
-        if (properties == null || properties.getStore() == null || properties.getStore().getRedis() == null) {
+        if (properties == null || properties.store() == null || properties.store().redis() == null) {
             log.error("init error, please config Warehouse redis props in application.yml");
             return false;
         }
-        WarehouseProperties.StoreProperties.RedisProperties redisProp = properties.getStore().getRedis();
+        WarehouseProperties.StoreProperties.RedisProperties redisProp = properties.store().redis();
         RedisURI.Builder uriBuilder = RedisURI.builder()
                 .withHost(redisProp.host())
                 .withPort(redisProp.port())