[java]一分钟学会spring注解之@Import注解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[java]一分钟学会spring注解之@Import注解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2801字,纯文字阅读大概需要5分钟。
内容图文
![[java]一分钟学会spring注解之@Import注解](/upload/InfoBanner/zyjiaocheng/1055/15465991acfb4ffdb48fb5c7be17aa12.jpg)
今天主要从以下几方面来介绍一下@Import注解
-
@Import注解是什么
-
@Import的三种使用方式
1,@Import注解是什么
通过导入的方式实现把实例加入springIOC容器中
2,@Import的三种使用方式
通过查看@Import源码可以发现@Import注解只能注解在类上,以及唯一的参数value上可以配置3种类型的值
Configuration,
ImportSelector,
ImportBeanDefinitionRegistrar,源码如下:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {
/**
* {@link Configuration}, {@link ImportSelector}, {@link ImportBeanDefinitionRegistrar}
* or regular component classes to import.
*/
Class<?>[] value();
}
接下来就分别来看看三种方式具体使用:
a,基于Configuration也就是直接填对应的class数组
在bean目录下新增两个类Square和Circular如下:
/**
* 定义一个圆形
*
* @author zhangqh
* @date 2018年5月1日
*/
public class Circular {
}
/**
* 定义一个正方形
*
* @author zhangqh
* @date 2018年5月1日
*/
public class Square {
}
MainConfig注解配置中增加@Import注解如下:
@Import({Square.class,Circular.class})
@Configuration
public class MainConfig
测试打印如下:
AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainConfig.class);
String[] beanNames = applicationContext2.getBeanDefinitionNames();
for(int i=0;i<beanNames.length;i++){
System.out.println("bean名称为==="+beanNames[i]);
}
运行结果:
bean名称为===mainConfig
bean名称为===com.zhang.bean.Square
bean名称为===com.zhang.bean.Circular
对应的import的bean都已经加入到spring容器中了
b,基于自定义ImportSelector的使用
定义一个MyImportSelector如下:
/**
* 定义一个我自己的ImportSelector
*
* @author zhangqh
* @date 2018年5月1日
*/
public class MyImportSelector implements ImportSelector{
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{"com.zhang.bean.Triangle"};
}
}
MainConfig注解配置修改如下:
@Import({Square.class,Circular.class,MyImportSelector.class})
测试结果如下:
bean名称为===mainConfig
bean名称为===com.zhang.bean.Square
bean名称为===com.zhang.bean.Circular
bean名称为===com.zhang.bean.Triangle
三角形 实例同样加入到spring容器中了
c,基于ImportBeanDefinitionRegistrar的使用
新建一个ImportBeanDefinitionRegistrar如下:
/**
* 定义一个自定的ImportBeanDefinitionRegistrar
*
* @author zhangqh
* @date 2018年5月1日
*/
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar{
public void registerBeanDefinitions(
AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry registry) {
// new一个RootBeanDefinition
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Rectangle.class);
// 注册一个名字叫rectangle的bean
registry.registerBeanDefinition("rectangle", rootBeanDefinition);
}
}
修改MainConfig注解配置如下:
@Import({Square.class,Circular.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class})
运行结果如下:
bean名称为===mainConfig
bean名称为===com.zhang.bean.Square
bean名称为===com.zhang.bean.Circular
bean名称为===com.zhang.bean.Triangle
bean名称为===rectangle
rectangle打印出来了说明我们通过ImportBeanDefinitionRegistrar注册的实例也成功加入到了spring容器了
原文:https://www.cnblogs.com/iiiiiher/p/12781618.html
内容总结
以上是互联网集市为您收集整理的[java]一分钟学会spring注解之@Import注解全部内容,希望文章能够帮你解决[java]一分钟学会spring注解之@Import注解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。