SpringBoot - @Import注解使用详解
通过导入的方式,来实现把实例加入Spring容器中的功能,相当于Spring xml配置文件中的<import /> 标签。
·
@Import注解的作用是什么?
通过导入的方式,来实现把实例加入Spring容器中的功能,相当于Spring xml配置文件中的<import /> 标签。
@Import注解能够导入哪些类?
可以导入普通类;
可以和@Configuration注解的类搭配使用;
可以和实现了ImportSelector和ImportBeanDefinitionRegistrar接口的类搭配使用。
@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;
}
}
更多推荐
已为社区贡献20条内容
所有评论(0)