【Spring】@Import注解详解
简述
@Import注解import的是其他地方定义的Bean,将松散的Bean集合在一起。
既可以引入普通类作为Bean,又可以引入标记了@Configuration类中的所有Bean。
1. 引入方式一:直接引入Bean
例子:
- 创建要被引入的bean
public class ImportedBean {}
- 创建配置类,并加上@Import注解引入ImportedBean,在main中获取ImportedBean
@Import(ImportedBean.class)
@Configuration
public class ImportingClass {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(ImportingClass.class);ImportedBean importedBean = context.getBean(ImportedBean.class);System.out.println(importedBean);}}
运行结果:
2. 引入方式二:引入标有@Configuration的类中的所有bean
例子:
@Configuration
public class ImportedConfig {@Beanpublic ImportedBean getImportedBean(){return new ImportedBean();}
}
@Import(ImportedConfig.class)
@Configuration
public class ImportingClass {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(ImportingClass.class);ImportedBean importedBean = context.getBean(ImportedBean.class);System.out.println(importedBean);}}
运行结果:
3. 引入方式三:通过ImportSelector个性化的引入想要的bean
@Import(MyImportSelector.class)
@Configuration
public class ImportingClass {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(ImportingClass.class);ImportedBean importedBean = context.getBean(ImportedBean.class);System.out.println(importedBean);}
}
public class MyImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"testimport.ImportedBean"};}
}
4.引入方式四:指定实现ImportBeanDefinationRegistrar的类,用于重定义要导入的Bean
与ImportSelector用法与用途类似,但是如果我们想重定义Bean,例如动态注入属性,改变Bean的类型和Scope等等,就需要通过指定实现ImportBeanDefinitionRegistrar的类实现。
public class MyImportBeanDefinationRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {//BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(ImportedBean.class).addConstructorArgValue("testName");registry.registerBeanDefinition("importedBeanUsingRegistrar",builder.getRawBeanDefinition());}
}
@Import(MyImportBeanDefinationRegistrar.class)
@Configuration
public class ImportingClass {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(ImportingClass.class);ImportedBean importedBean = (ImportedBean) context.getBean("importedBeanUsingRegistrar");System.out.println(importedBean);System.out.println(importedBean.getName());}}
【Spring】@Import注解详解相关推荐
- Spring Boot注解详解
文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...
- Spring新注解详解
使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置如下: 非自定义的Bean的配置:<bean> 加载properties文件的配置:context:property-p ...
- 一篇全了解Spring全注解详解
目录 用于创建对象 1.Component 2.Controller 3.Service 4.Repository 用于注入数据 1.Autowired 2.Qulifier 3.Resource 4 ...
- @Import注解详解
@Import注解提供了三种用法 1.@Import一个普通类 spring会将该类加载到spring容器中 2.@Import一个类,该类实现了ImportBeanDefinitionRegistr ...
- 被各种注解搞晕了?那快来看看Spring Bean注解详解!
前言 本篇博客中,我们将会讨论用于声明不同类型 Beans 的几种最常用的 Spring Bean 注解. 众所周知,Spring 容器中有许多配置 Bean 的方法,我们既可以通过 XML 配置,也 ...
- Spring cache 注解详解
spring cache注解的使用: @CacheConfig 类级别的缓存注解,允许共享缓存名称 @Caching 将多种缓存操作分组 @Cacheable 触发缓存入口 @CacahePut 更新 ...
- ideal如何快速导入import_Spring的@Import注解详解
首先看下@Import的javadoc文档: Provides functionality equivalent to the <import/> element in Spring XM ...
- @mapperscan注解_Spring的@Import注解详解
首先看下@Import的javadoc文档: Provides functionality equivalent to the <import/> element in Spring XM ...
- 原理探究:Spring @Value注解详解
前 言 对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了.spring给开发者提供了非常丰富的api,今天咱们重点聊聊@Value注解,因为它是一个非常有用,但极其容易被忽视的注 ...
最新文章
- [转]获取Setup文件的运行路径
- 1951: [Sdoi2010]古代猪文
- 一、mysql使用入门
- 服务器打不QQ显示00001,QQ登录超时00001怎么处理?
- OpenCV中Mat总结
- 部署HDFS HA的环境
- 7.请解释泛型list集合的长度为什么动态的?_Java面试题集合篇一
- gtk-vnc linux,vncviewer远程链接桌面linux
- HTML5 响应式网页设计之页面美化(一.响应式布局)
- pic单片机c语言编程优势,PIC单片机与PIC单片机C语言编程简介
- ASC2BCD及奇偶校验位
- 最简洁的富文本编辑器
- 将路由器当成交换机使用
- Could not extract response: no suitable HttpMessageConverter found for response type [class com.exam
- IPFS和梅克尔森林
- 经典物理建模钢琴-4Front TruePianos v1.9.8 WiN-MAC
- android arcgis使用自定义图片背景底图(tif图片制作)
- 高中数学知识点:集合知识讲解
- Android 中利用XPosed拦截系统消息
- CF1631F. Flipping Range dp **
热门文章
- android中默认短信,android开发中设置默认短信应用的两种方法
- win7计算机建立无线网络连接不上,Win7笔记本无线网络连接不上如何解决?
- 处理医疗影像的Python利器:PyDicom
- 2005年3月13日
- 威海二职工业机器人专业_工业机器人专业介绍和前景分析二
- 笔记:FPGA与VHDL语言学习3
- vue实现鼠标放上去就有提示_Vue实现鼠标经过文字显示悬浮框效果的示例代码
- 计算机基础教案免费,计算机基础教案(20190417033410)
- 乱码 Linux,linux中文乱码【图文教程】
- 蚂蚁金服和他的小伙伴又在搞事情了