Spring将Bean导入IOC容器
2024-10-18 18:26:55
@Import 注解可以普通类导入到 IoC容器中。
想要让一个普通类接受 Spring 容器管理,有以下方法
- 使用 @Bean 注解
- 使用 @Controller @Service @Repository @Component 注解标注该类,然后再使用 @ComponentScan 扫描包
- @Import 方法,即现在这种方式
Student 类
public class Student {
}
配置类
@Configuration
@Import(Student.class)
public class ImportConfig { }
测试代码
@Test
public void test7() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(ImportConfig.class);
String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
for (String name : beanDefinitionNames) {
System.out.println(name);
}
}
观察有没有 Student 产生的 bean
结果
bean成功创建
以上导入普通的 Java 并将其声明为一个 bean 功能在 4.2 之后才可以使用在 spring 4.2 以前,该注解,只能导入配置类,其功能与 <import /> 标签类似
ImportSelector
ImportSelector : 返回需要导入的组件的全类名数组
MySelector 类
public class MySelector implements ImportSelector {
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{"me.sjl.bean.Person"};
}
}
配置类
@Configuration
@Import(MySelector.class)
public class ImportConfig { }
测试代码不变,直接看结果
Person 类被加载
ImportBeanDefinitionRegistrar
BeanDefinitionRegistrar
public class MyBeanDefinitionRegistrat implements ImportBeanDefinitionRegistrar { @Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
BeanDefinition beanDefinition = new RootBeanDefinition(Person.class);
registry.registerBeanDefinition("PERSON", beanDefinition);
}
}
配置类
@Configuration
@Import(MyBeanDefinitionRegistrat.class)
public class ImportConfig { }
测试代码不变,直接看结果,看看是否有 PERSON 这个组件
PERSON 成功注册
最新文章
- c# 使用泛型类型作为参数
- LeetCode - 72. Edit Distance
- 深入理解JQuery插件开发
- PHP的学习--图解PHP引用
- Oracle 数据库对象
- [问题2014S06] 复旦高等代数II(13级)每周一题(第六教学周)
- MVC ASP.net流程 源代码分析
- C# is和as操作符
- MTK android flash配置
- 编写高效的Android代码
- (转)Mysql数据库读写分离配置
- EasyUI - 要引入的JS文件
- Vuex state 状态浅解
- javaScript额外笔记
- 使用Entity Framework Core访问数据库(Oracle篇)
- c#的几种数据结构
- 自己练习的一个小的demo的时候a标签关于href链接的问题
- RabbitMQ随笔
- SQL Server 2008重新保存表时出错
- mysql找到所有索引