SpringBoot静态方法获取 bean 的三种方式
在SpringBoot中,我们可以通过以下三种方式获取bean:
- 使用ApplicationContextAware接口
这是一个非常常见的方式,通过实现ApplicationContextAware接口,我们可以在任何地方获取Spring容器中的Bean。
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext context = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.context = applicationContext;
}
public static <T> T getBean(Class<T> clazz) {
return context.getBean(clazz);
}
}
然后你可以在任何地方通过以下方式获取Bean:
MyBean myBean = SpringContextUtil.getBean(MyBean.class);
- 使用@Autowired注解
你可以在任何Spring管理的类中使用@Autowired注解来注入Spring容器中的任何Bean。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Autowired
private MyBean myBean;
public void doSomething() {
myBean.doSomething();
}
}
- 使用@Bean注解
你可以在配置类中使用@Bean注解来定义一个静态方法,该方法返回你想要的Bean。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
然后你可以在任何地方通过以下方式获取Bean:
MyBean myBean = SpringApplication.run(Application.class).getBean(MyBean.class);
以上就是SpringBoot中获取bean的三种方式。
评论已关闭