【@Import】@Import註解使用方式

使用方式

直接注入

新建一個Man類,不加註解,不在啓動時注入到spring IOC容器中

public class Man {

    public void say() {
        System.out.println("I am a man.");
    }

}

新建一個Woman類,不加註解,不在啓動時注入到spring IOC容器中

public class Woman {

    public void say() {
        System.out.println("I am a woman.");
    }

}

在啓動類中用@Import注入Man.class和Woman.class

@SpringBootApplication
@Import({Man.class, Woman.class})
public class AddApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(AddApplication.class, args);
        Man man = context.getBean(Man.class);
        Woman woman = context.getBean(Woman.class);
        man.say();
        woman.say();
    }
}

得到輸出結果

2019-09-04 16:01:38.836  INFO 23088 --- [  restartedMain] c.p.a.AddApplication   : Started AddApplication in 13.614 seconds (JVM running for 15.87)
I am a man.
I am a woman.

可以看到這個註解可以讓這個類的實例不需要在啓動的時候注入,而是在運行中實際需要用到時開始注入。

使用配置類

創建一個配置類,類上面不需要加註解,但是獲取Man和Woman的方法要加@Bean註解注入

public class HumanConfig {

    @Bean
    public Man getMan() {
        return new Man();
    }

    @Bean
    public Woman getWoman() {
        return new Woman();
    }

}

在啓動類中用@Import注入HumanConfig.class

@SpringBootApplication
@Import({HumanConfig.class})
public class AddApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(AddApplication.class, args);
        Man man = context.getBean(Man.class);
        Woman woman = context.getBean(Woman.class);
        man.say();
        woman.say();
    }
}

得到輸出結果

2019-09-04 16:09:03.368  INFO 21892 --- [  restartedMain] c.p.a.AddApplication   : Started AddApplication in 13.614 seconds (JVM running for 15.87)
I am a man.
I am a woman.

通過配置類的好處就是可用統一入口,方便查找資源和注入時使用的方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章