底层注解-@Import导入组件
# 60.底层注解-@Import导入组件
我们还可以使用@Import来注册组件,该注解可以配置在配置类上,也可以配置在Controller上,只需要是容器中的组件都可以。
# 源码
我们假设在Myconfig类上加了该注解。可以点进@Import,看看其源码:
public @interface Import {
Class<?>[] value();
}
1
2
3
2
3
可以看到是一个数组,也就是可以导入很多组件。
# 导入
可以导入我们项目中自己写的组件,也可以导入第三方依赖中的类。例如,我们导入User类,和一个Lombok中的类:
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false)
public class MyConfig {
1
2
3
2
3
然后SpringBoot就会调用这两个类的无参构造器,来创建对象,并放到容器中。
默认组件的名字就是全类名。可以在MainApplication
中打印下:
// @Import注解
System.out.println("=========");
String[] beanNamesForType = run.getBeanNamesForType(User.class);
for (String s : beanNamesForType) {
System.out.println(s);
}
DBHelper bean1 = run.getBean(DBHelper.class);
System.out.println(bean1); //ch.qos.logback.core.db.DBHelper@7e0babb4
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
运行结果:
=========
com.peterjxl.boot.bean.User
user01
ch.qos.logback.core.db.DBHelper@304a9d7b
1
2
3
4
2
3
4
# 源码
已将本文源码上传到Gitee (opens new window)或GitHub (opens new window) 的分支demo4,读者可以通过切换分支来查看本文的示例代码
在GitHub上编辑此页 (opens new window)
上次更新: 2023/8/23 10:10:57