SpringBoot2底層注解@Import用法詳解
SpringBoot2注解@Import
上一篇中了解到了@Configuration
,可以注冊(cè)組件。除此之外,還有許多注解也可以,用法跟之前學(xué)習(xí) spring 的時(shí)候一樣。
比如,@Bean
、@Component
、@Controller
、@Service
、@Repository
等。
這篇介紹另外一種給容器添加組件的方法:@Import
注解,給容器中導(dǎo)入組件。
@Import 導(dǎo)入組件
用法
@Import
的用法很簡(jiǎn)單,放在任意配置類或者組件里面都可以。
另外,它還是數(shù)組,所以可以導(dǎo)入多個(gè)組件。比如:
@Import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) public class MyConfig { @Bean("user1") public User user01(){ User pingguo = new User("pingguo",20); pingguo.setPet(tomcatPet()); return pingguo; } @Bean("pet1") public Pet tomcatPet(){ return new Pet("tomcat"); } }
這里導(dǎo)入了 2 個(gè)組件,分別是User.class
和DBHelper.class
。
其中 User.class
是之前我自定義的類,而DBHelper.class
是隨便找的一個(gè)第三方包下的類。
寫好之后,@Import
就可以給容器中自動(dòng)創(chuàng)建出這 2 個(gè)類型的組件。
驗(yàn)證
驗(yàn)證一下,容器中是否存在上述的 2 個(gè)組件。
代碼還是加在 main 方法里,把全部代碼放出來,方便后續(xù)查看。
// 標(biāo)記這是一個(gè) springboot應(yīng)用,這個(gè)類是主程序類,所有啟動(dòng)的入口 @SpringBootApplication(scanBasePackages = "com.pingguo") public class MainApplication { public static void main(String[] args) { // 返回IOC容器 final ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); // 查看容器里的組件 final String[] beanDefinitionNames = run.getBeanDefinitionNames(); for (String name: beanDefinitionNames) { System.out.println(name); } // 從容器中獲取組件 MyConfig bean = run.getBean(MyConfig.class); System.out.println("配置類也是組件:" + bean); User user1 = bean.user01(); User user2 = bean.user01(); System.out.println(user1 == user2); // 依賴關(guān)系 User user01 = run.getBean("user1", User.class); Pet pet1 = run.getBean("pet1", Pet.class); System.out.println("依賴:" + (user01.getPet() == pet1)); // @Import 組件 String[] beanNamesForType = run.getBeanNamesForType(User.class); System.out.println("====獲取 User 類型的 bean ===="); for (String s : beanNamesForType) { System.out.println(s); } System.out.println("====獲取 DBHelper 類型的 bean ===="); DBHelper bean1 = run.getBean(DBHelper.class); System.out.println(bean1); } }
看最后// @Import 組件
相關(guān)的代碼。
這里因?yàn)橹皩W(xué)習(xí)中注冊(cè)過多個(gè) User 類型的組件,所以遍歷一下打印輸出。
運(yùn)行結(jié)果中,可以看到有2個(gè) User 類型的 bean,分別是user1
和com.pingguo.boot.bean.User。
對(duì)于user1
,是之前使用@bean
注冊(cè)的。
而對(duì)于com.pingguo.boot.bean.User,則是這次使用Import
導(dǎo)入進(jìn)去的,默認(rèn)組件名是全類名。
最后一個(gè)ch.qos.logback.core.db.DBHelper@4943defe,這是導(dǎo)入的第三方的包的類,成功在容器中注冊(cè)了組件。
以上就是SpringBoot2底層注解@Import用法詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot2注解@Import的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Transactional事務(wù)的使用以及注意說明
這篇文章主要介紹了Transactional事務(wù)的使用以及注意說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java高并發(fā)BlockingQueue重要的實(shí)現(xiàn)類詳解
這篇文章主要給大家介紹了關(guān)于Java高并發(fā)BlockingQueue重要的實(shí)現(xiàn)類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01SpringBoot整合Mybatis實(shí)現(xiàn)CRUD
這篇文章主要介紹了SpringBoot整合Mybatis實(shí)現(xiàn)CRUD的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

Java +Tomcat + SpringMVC實(shí)現(xiàn)頁面訪問示例解析

Java 動(dòng)態(tài)模擬操作系統(tǒng)進(jìn)程調(diào)度算法

springmvc后臺(tái)基于@ModelAttribute獲取表單提交的數(shù)據(jù)