@Override
    public void init() throws AppConnErrorException {
        initialize();
        appStandards = Arrays.stream(getClass().getDeclaredMethods()).map(method -> {
            String methodName = method.getName();
            if(appStandardMethodHeader.stream().anyMatch(methodName::startsWith) &&
                AppStandard.class.isAssignableFrom(method.getReturnType())) {
                try {
                    return (AppStandard) method.invoke(this);
                } catch (ReflectiveOperationException e) {
                    logger.warn(methodName + " execute failed, ignore to set it into appStandardList of " + getClass().getSimpleName(), e);
                }
            }
            return null;
        }).filter(Objects::nonNull).collect(Collectors.toList());
        if(this instanceof OnlySSOAppConn) {
            SSORequestService ssoRequestService = ((OnlySSOAppConn) this).getOrCreateSSOStandard().getSSORequestService();
            for(AppStandard appStandard : appStandards) {
                if(appStandard instanceof AppIntegrationStandard) {
                    ((AppIntegrationStandard<SSORequestService>) appStandard).setSSORequestService(ssoRequestService);
                }
                try {
                    appStandard.init();
                } catch (AppStandardErrorException e) {
                    throw new AppConnErrorException(e.getErrCode(), "Init " + appStandard.getStandardName() + " failed!", e);
                }
            }
        }
    }
Specification: each appconn needs to define a method starting with create
and returning as standard type to initialize the specifications owned by appconn.
dss-appconn/dss-appconn-core/src/main/java/com/webank/wedatasphere/dss/appconn/core/impl/AbstractAppConn.java