中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

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中拋出對應的異常,來提示給開發人員

posted @ 2022-09-09 10:03  張占嶺  閱讀(662)  評論(0)    收藏  舉報