SpringBoot - @Import注解使用详解

@Import注解是Spring框架中用于将类导入到Spring容器的关键机制,等效于XML配置文件的<import/>标签。它可以导入普通类、@Configuration类以及实现了ImportSelector和ImportBeanDefinitionRegistrar接口的类。@Import注解可以应用于自定义注解、启动类、配置类和@Component注解的类上,例如在自定义注解、启动类以及配置类中导入配置对象,以实现不同场景下的依赖注入和配置加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Import注解的作用是什么?

通过导入的方式,来实现把实例加入Spring容器中的功能,相当于Spring xml配置文件中的<import /> 标签。

@Import注解能够导入哪些类?

可以导入普通类;
可以和@Configuration注解的类搭配使用;
可以和实现了ImportSelectorImportBeanDefinitionRegistrar接口的类搭配使用。

@Import注解能够添加到哪些类上?

@Import注解可以添加在自定义的注解、@SpringBootApplication(启动类)、@Configuration(配置类)和@Component(组件类)所注解的类上(@RestController、@Service、@Repository都属于@Component),从而实现将实例加入到Spring容器中的功能。

①. 可以在自定义的注解中使用

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
// 表示通过aop框架暴露该代理对象,AopContext能够访问
@EnableAspectJAutoProxy(exposeProxy = true)

// 指定要扫描的Mapper类的包的路径
@MapperScan("com.hadoopx.**.mapper")
// 开启线程异步执行
@EnableAsync
// 导入相关配置类
@Import({ ApplicationConfig.class, FeignAutoConfiguration.class })
public @interface EnableCustomConfig
{
}

②. 可以在启动类中使用

@EnableServiceFeignClients
@EnableDiscoveryClient
@MapperScan("com.hadoopx.**.mapper")
@SpringBootApplication
@Slf4j
@Import({MinioUtil.class})
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

③. 配合配置类导入配置对象

// 配置类
@Configuration
@Import({DroolsProperties.class})
public class DroolsConfig {

    @Bean
    @ConditionalOnMissingBean(name = "kieTemplate")
    public KieTemplate kieTemplate(DroolsProperties droolsProperties) {
        KieTemplate kieTemplate = new KieTemplate();
        kieTemplate.setPath(droolsProperties.getPath());
        kieTemplate.setMode(droolsProperties.getMode());
        if (droolsProperties.isAutoUpdate()) {
            // 启用自动更新
            kieTemplate.setUpdate(droolsProperties.getUpdate());
        } else {
            // 关闭自动更新
            kieTemplate.setUpdate(999999L);
        }
        kieTemplate.setListener(droolsProperties.isListener());
        kieTemplate.setVerify(droolsProperties.isVerify());
        kieTemplate.setUseRedis(droolsProperties.isUseRedis());
        return kieTemplate;
    }

    @Bean
    @ConditionalOnMissingBean(name = "kieSchedule")
    public KieSchedule kieSchedule(KieTemplate kieTemplate) {
        KieSchedule kieSchedule = new KieSchedule(kieTemplate);
        kieSchedule.execute();
        return kieSchedule;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值