springboot通过各种不同类型参数获取容器中的bean工具类

一般依赖通过@Autowired,@Resource注入就可以了,也可以通过将属性设置为private final类型,再使用lombok的@AllArgsConstructor也可以注入。使用这个工具类,主要是在处理spring事务的时候,拿到某个对象的代理类,以更加精准的控制事务。

@Component
public class SpringContextHelper implements ApplicationContextAware {
    
    
    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    
    
        if (SpringContextHelper.applicationContext == null) {
    
    
            SpringContextHelper.applicationContext = applicationContext;
        }
    }

    /**
     * @apiNote 获取applicationContext
     * @author roswu 2021/04/28 19:40:00
     */
    public static ApplicationContext getApplicationContext() {
    
    
        return applicationContext;
    }

    /**
     * @apiNote 通过name获取 Bean.
     * @author roswu 2021/04/28 19:39:00
     */
    public static Object getBean(String name) {
    
    
        return getApplicationContext().getBean(name);
    }

    /**
     * @apiNote 通过class获取Bean.
     * @author roswu 2021/04/28 19:39:00
     */
    public static <T> T getBean(Class<T> clazz) {
    
    
        return getApplicationContext().getBean(clazz);
    }

    /**
     * @apiNote 通过name, 以及Clazz返回指定的Bean
     * @author roswu 2021/04/28 19:39:00
     */
    public static <T> T getBean(String name, Class<T> clazz) {
    
    
        return getApplicationContext().getBean(name, clazz);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_41885819/article/details/116658995
今日推荐