All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cool.lazy.cat.orm.api.web.ApiAutoConfiguration Maven / Gradle / Ivy

package cool.lazy.cat.orm.api.web;

import cool.lazy.cat.orm.api.ApiConfig;
import cool.lazy.cat.orm.api.manager.ApiPojoManager;
import cool.lazy.cat.orm.api.service.CommonApiService;
import cool.lazy.cat.orm.api.service.impl.CommonApiServiceImpl;
import cool.lazy.cat.orm.api.web.entrust.BasicEntrustController;
import cool.lazy.cat.orm.api.web.entrust.EntrustController;
import cool.lazy.cat.orm.api.web.entrust.executor.ApiMethodExecutor;
import cool.lazy.cat.orm.api.web.entrust.executor.DefaultApiMethodExecutor;
import cool.lazy.cat.orm.api.web.entrust.executor.intercepter.ApiMethodExecuteInterceptor;
import cool.lazy.cat.orm.api.web.entrust.method.ApiMethodEntry;
import cool.lazy.cat.orm.api.web.entrust.provider.ApiEntryInfoProvider;
import cool.lazy.cat.orm.api.web.entrust.provider.DefaultApiEntryInfoProvider;
import cool.lazy.cat.orm.core.base.repository.BaseRepository;
import cool.lazy.cat.orm.core.manager.PojoTableManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;

import java.util.List;

/**
 * @author: mahao
 * @date: 2021/4/21 19:56
 */
@Import(value = {ApiMethodAutoConfiguration.class})
public class ApiAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean(value = CommonApiService.class)
    public CommonApiService commonApiService(BaseRepository baseRepository, PojoTableManager pojoTableManager, ApiPojoManager apiPojoManager) {
        return new CommonApiServiceImpl(baseRepository, pojoTableManager, apiPojoManager);
    }

    @Bean
    @ConditionalOnMissingBean(value = UriPojoMapping.class)
    public UriPojoMapping uriPojoMapping() {
        return new UriPojoMapping();
    }

    @Bean
    @ConditionalOnMissingBean(value = ApiEntryInfoProvider.class)
    public DefaultApiEntryInfoProvider defaultApiEntryInfoProvider(UriPojoMapping uriPojoMapping) {
        return new DefaultApiEntryInfoProvider(uriPojoMapping);
    }

    @Bean
    @ConditionalOnMissingBean(value = ApiMethodExecutor.class)
    public DefaultApiMethodExecutor defaultApiMethodExecutor(List apiMethodEntryList, @Autowired(required = false)List interceptorList) {
        return new DefaultApiMethodExecutor(apiMethodEntryList, interceptorList);
    }

    @Bean
    @ConditionalOnMissingBean(value = EntrustController.class)
    public BasicEntrustController basicEntrustController(ApiEntryInfoProvider apiEntryInfoProvider, ApiMethodExecutor apiMethodExecutor, ApiConfig apiConfig) {
        return new BasicEntrustController(apiEntryInfoProvider, apiMethodExecutor, apiConfig.getApiPath());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy