SpringBoot2底層注解@Import用法詳解
SpringBoot2注解@Import
上一篇中了解到了@Configuration,可以注冊組件。除此之外,還有許多注解也可以,用法跟之前學(xué)習(xí) spring 的時候一樣。
比如,@Bean、@Component、@Controller、@Service、@Repository等。
這篇介紹另外一種給容器添加組件的方法:@Import注解,給容器中導(dǎo)入組件。
@Import 導(dǎo)入組件
用法
@Import的用法很簡單,放在任意配置類或者組件里面都可以。
另外,它還是數(shù)組,所以可以導(dǎo)入多個組件。比如:
@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 個組件,分別是User.class和DBHelper.class。
其中 User.class 是之前我自定義的類,而DBHelper.class是隨便找的一個第三方包下的類。

寫好之后,@Import就可以給容器中自動創(chuàng)建出這 2 個類型的組件。
驗證
驗證一下,容器中是否存在上述的 2 個組件。
代碼還是加在 main 方法里,把全部代碼放出來,方便后續(xù)查看。
// 標記這是一個 springboot應(yī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)的代碼。
這里因為之前學(xué)習(xí)中注冊過多個 User 類型的組件,所以遍歷一下打印輸出。

運行結(jié)果中,可以看到有2個 User 類型的 bean,分別是user1和com.pingguo.boot.bean.User。
對于user1,是之前使用@bean注冊的。

而對于com.pingguo.boot.bean.User,則是這次使用Import導(dǎo)入進去的,默認組件名是全類名。
最后一個ch.qos.logback.core.db.DBHelper@4943defe,這是導(dǎo)入的第三方的包的類,成功在容器中注冊了組件。
以上就是SpringBoot2底層注解@Import用法詳解的詳細內(nèi)容,更多關(guān)于SpringBoot2注解@Import的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring?Boot?快速使用?HikariCP?連接池配置詳解
Spring Boot 2.x 將其作為默認的連接池組件,項目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模塊后,HikariCP 依賴會被自動引入,這篇文章主要介紹了Spring?Boot使用HikariCP連接池配置詳解,需要的朋友可以參考下2023-06-06
springboot結(jié)合mybatis操作事務(wù)配置的處理
在操作數(shù)據(jù)庫的時候,經(jīng)常會使用事務(wù)的處理,本文主要介紹了springboot結(jié)合mybatis操作事務(wù)配置的處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
淺析對Java關(guān)鍵字final和static的理解
本文主要給大家談?wù)勑【帉ava關(guān)鍵字final和static的理解,本文給大家介紹的較詳細,需要的朋友參考參考下2017-04-04
Spring?AOP?的實現(xiàn)和切點表達式的實現(xiàn)方式
本文給大家介紹了Spring?AOP的基本概念、通知類型、切點表達式和切面優(yōu)先級,并通過示例代碼展示了如何實現(xiàn)這些功能,感興趣的朋友跟隨小編一起看看吧2024-12-12

