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

本文介绍如何在Spring框架中使用@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.

通过配置类的好处就是可用统一入口,方便查找资源和注入时使用的方便

@Import注解Spring框架中的一个注解,它用于将其他类或配置导入到当前类中。@Import可以单独使用,也可以和其他注解一起使用,例如@Configuration注解ImportSelector接口和ImportBeanDefinitionRegistrar接口。 当@Import注解单独使用时,它可以直接将其他普通的类导入到当前类中,以便在当前类中可以使用被导入的类。 当@Import注解结合@Configuration注解ImportSelector接口和ImportBeanDefinitionRegistrar接口使用时,在Spring Boot中是最常见的用法之一。举个例子,如果我们在一个类上使用@EnableAutoConfiguration注解,那么在该注解的源码中会使用@Import注解来导入AutoConfigurationImportSelector类。这样,通过@EnableAutoConfiguration注解,我们可以自动配置应用程序的一些默认设置。 总结来说,@Import注解是用来将其他类或配置导入到当前类中的注解,可以单独使用,也可以和其他注解一起使用,常见的用法是结合@Configuration注解ImportSelector接口和ImportBeanDefinitionRegistrar接口在Spring Boot中实现自动配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [@Import注解的四种使用方式](https://blog.youkuaiyun.com/bluemysky/article/details/128827769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [@Import注解使用](https://blog.youkuaiyun.com/m0_55806905/article/details/127967036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值