底层注解-@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,读者可以通过切换分支来查看本文的示例代码
上次更新: 2024/10/3 10:01:52