spring_import
spring import
@Import标签使用
- 一般基本的用import标签使用
1
@Import(value = {Dog.class})
2.实现import接口
Cat
1
2
3 package com.melon.app.bean;
public class Cat {
}
Dog
1
2
3 package com.melon.app.bean;
public class Dog {
}
MelonImportSelector实现spring提供的接口
package com.melon.app.config;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
public class MelonImportSelector implements ImportSelector {
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{“com.melon.app.bean.Cat”,”com.melon.app.bean.Dog”};
}
}
MyImportConfigureation 配置类
1
2
3
4 @Configuration
@Import(value = {MelonImportSelector.class})
public class MyImportConfigureation {
}
测试扫描出来的bean结果如下
1
2
3
4
5
6
7
8 org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
myImportConfigureation
com.melon.app.bean.Cat
com.melon.app.bean.Dog
- importBeanDefintionRegister
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public class MelonImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
/**
*
* @param importingClassMetadata 当前类的注解信息
* @param registry beanDefinition注册类
* 把所有需要添加到容器中的bean加入。
*/
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
boolean bean1 = registry.containsBeanDefinition("com.melon.app.bean.Dog");
boolean bean2= registry.containsBeanDefinition("com.melon.app.bean.Cat");
//如果Dog和Cat同时存在于我们IOC容器中,那么创建Pig类,加入到容器
//对于我们要注册的bean,给bean进行封装,
if(bean1 && bean2) {
RootBeanDefinition beanDefinition = new RootBeanDefinition(Pig.class);
registry.registerBeanDefinition("pig",beanDefinition);
}
}
}
1 | @Configuration |
扫描注册bean结果
1
2
3
4
5
6
7
8
9 org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
myImportConfigureation
com.melon.app.bean.Cat
com.melon.app.bean.Dog
pig
原文作者: 西瓜哥
原文链接: http://yoursite.com/2019/07/28/spring-import/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)