springboot~ApplicationContextAware与@Autowired注解()

  本篇文章为你整理了springboot~ApplicationContextAware与@Autowired注解()的详细内容,包含有 springboot~ApplicationContextAware与@Autowired注解,希望能帮助你了解 springboot~ApplicationContextAware与@Autowired注解。

  ApplicationContextAware是一个接口,它提供一个方法setApplicationContext,当spring注册完成之后,会把ApplicationContext对象以参数的方式传递到方法里,在方法里我们可以实现自己的逻辑,去获取自己的bean,当前对接的断言等;一般用在被封装的工具包,starter包中,方便给其它开发人员调用。

  @Autowired是直接给开发人员用的,直接注入对接类型的bean的,开箱即用,对应的注解还有@Qualifier,或者直接使用@Resource注解来实现按beanName的注入。

  LindContext

  

@Component

 

  public class LindContext {

   public void print(){

   System.err.println("lind-context print.");

  

 

  LindAware

  

public class LindAware implements ApplicationContextAware {

 

   ApplicationContext applicationContext;

   LindContext lindContext;

   public void contextPrint() {

   this.lindContext.print();

   @Override

   public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

   this.applicationContext = applicationContext;

   if (this.applicationContext.getBeansOfType(LindContext.class).isEmpty()) {

   throw new IllegalArgumentException("未加载或者未发现LindContext的bean,请保证它可以正常加载到Spring容器.");

   this.lindContext = this.applicationContext.getBean(LindContext.class);

  

 

  LindConfig

  

@Configuration

 

  public class LindConfig {

   @Bean

   public LindAware testAware() {

   return new LindAware();

  

 

  测试

  

@RunWith(SpringRunner.class)

 

  @SpringBootTest()

  public class TestAware {

   @Autowired

   LindAware lindAware;

   @Test

   public void print() {

   lindAware.contextPrint();

  

 

  当前如果没有LindContext的bean被注册时,会在LindAware中抛出对应的异常,来提示给开发人员
 

  以上就是springboot~ApplicationContextAware与@Autowired注解()的详细内容,想要了解更多 springboot~ApplicationContextAware与@Autowired注解的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: