public <T> T loadProperties(Class<T> propertiesClass) {
        Constructor<T> constructor;
        try {
            constructor = propertiesClass.getDeclaredConstructor();
        } catch (Exception e) {
            throw new IllegalArgumentException(
                    "The properties class ("
                            + propertiesClass.getName()
                            + ") must have a public no-arg constructor",
                    e);
        }
        T properties;
        try {
            properties = constructor.newInstance();
        } catch (Exception e) {
            throw new RuntimeException(
                    "Failed to initialize the properties class: "
                            + propertiesClass.getName(),
                    e);
        }
        String s = propertiesClass.getName() + UUID.randomUUID();
        return (T) context.getBean(ConfigurationPropertiesBindingPostProcessor.class)
                .postProcessBeforeInitialization(properties, s);
    }
Use the instance of TurmsPropertiesManager instead of TurmsProperties instance so that we can
update the global TurmsProperties instance easily by replacing its reference
turms-server-common/src/main/java/im/turms/server/common/infra/property/TurmsPropertiesManager.java