SpringBoot开发环境中,在普通类或其他工具类中需要获取容器中的对象在开发中是较为常见的现象,可通过如下方式创建SpringUtils

1、创建SpringUtils,自定义获取对象的具体方法实现

package com.lemonzuo.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * @author LemonZuo
 * @create 2020-04-28 22:17
 */
@Component
public class SpringUtil implements ApplicationContextAware {
    private static ApplicationContext context;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }

    public static void set(ApplicationContext applicationContext) {
        context = applicationContext;
    }

    /**
     * 通过字节码获取
     * @param beanClass
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> beanClass) {
        return context.getBean(beanClass);
    }

    /**
     * 通过BeanName获取
     * @param beanName
     * @param <T>
     * @return
     */
    public static <T> T getBean(String beanName) {
        return (T) context.getBean(beanName);
    }

    /**
     * 通过beanName和字节码获取
     * @param name
     * @param beanClass
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> beanClass) {
        return context.getBean(name, beanClass);
    }
}

2、在主启动类中将获取到上下文环境,并添加到容器中,供SpringUtils使用

@SpringBootApplication
public class LearnApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(LearnApplication.class, args);
        SpringUtil.set(context);
    }

}

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐