亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot2底層注解@Import用法詳解

 更新時間:2022年05月28日 09:29:39   作者:把蘋果咬哭的測試筆記  
這篇文章主要為大家介紹了SpringBoot2底層注解@Import用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

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.classDBHelper.class

其中 User.class 是之前我自定義的類,而DBHelper.class是隨便找的一個第三方包下的類。

寫好之后,@Import就可以給容器中自動創(chuàng)建出這 2 個類型的組件。

驗證

驗證一下,容器中是否存在上述的 2 個組件。

代碼還是加在 main 方法里,把全部代碼放出來,方便后續(xù)查看。

// 標(biāo)記這是一個 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)入進(jìn)去的,默認(rèn)組件名是全類名。

最后一個ch.qos.logback.core.db.DBHelper@4943defe,這是導(dǎo)入的第三方的包的類,成功在容器中注冊了組件。

以上就是SpringBoot2底層注解@Import用法詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot2注解@Import的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Boot 配置大全(小結(jié))

    Spring Boot 配置大全(小結(jié))

    本篇文章主要介紹了Spring Boot 配置大全(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Java +Tomcat + SpringMVC實現(xiàn)頁面訪問示例解析

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

    這篇文章主要介紹了Java +Tomcat + SpringMVC實現(xiàn)頁面訪問示例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java 動態(tài)模擬操作系統(tǒng)進(jìn)程調(diào)度算法

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

    這篇文章主要介紹了采用java語言編程模擬N個進(jìn)程采用動態(tài)高優(yōu)先權(quán)優(yōu)先進(jìn)程調(diào)度算法。文中代碼具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2021-12-12
  • Springbean的幾種注入方式都了解嗎

    Springbean的幾種注入方式都了解嗎

    這篇文章主要介紹了Springbean的幾種注入方式都了解嗎,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • springmvc后臺基于@ModelAttribute獲取表單提交的數(shù)據(jù)

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

    這篇文章主要介紹了springmvc后臺基于@ModelAttribute獲取表單提交的數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 最新評論