package pwc.taxtech.atms.common.util;

import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import pwc.taxtech.atms.dao.OrganizationMapper;
import pwc.taxtech.atms.dao.UserMapper;
import pwc.taxtech.atms.service.impl.DistributedIdService;

import java.util.HashMap;
import java.util.Map;


//用来获取spring托管的bean
@Component
public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext webApplicationContext;

    public static DistributedIdService distributedIdService;
    public static OrganizationMapper organizationMapper;
    public static UserMapper userMapper;
    public   static Map map = new HashMap<String, Object>();
    public   static SqlSessionFactory sqlSessionFactory;

    /**
     * 获取bean
     *
     * @param requiredType
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> requiredType) {
        return SpringContextUtil.webApplicationContext.getBean(requiredType);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        webApplicationContext = applicationContext;
        distributedIdService = webApplicationContext.getBean(DistributedIdService.class);
        userMapper = webApplicationContext.getBean(UserMapper.class);
        sqlSessionFactory = webApplicationContext.getBean(SqlSessionFactory.class);
    }
}