如何使用@import导入实现了ImportBeanDefinitionRegistrar接口的类?
如何使用@import导入实现了ImportBeanDefinitionRegistrar接口的类?
在程序开发的时候,我们经常会遇见一个名词“接口”这也是我们做开发人员工作中必不可少的一个技术,接下来就和大家分享一下怎么使用@import导入实现了ImportBeanDefinitionRegistrar接口的类。
package com.example.demo9;
import com.example.demo9.server.MyServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;
@SpringBootApplication
public class Demo9Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Demo9Application.class, args);
String[] beanNamesForType = context.getBeanNamesForType(MyServer.class);
System.out.println(Arrays.asList(beanNamesForType).toString());
context.close();
}
}
public interface MyServer {
void fun();
}
package com.example.demo9.server;
//这里最好不要加@Service,除非有其它要求
public class MyServerAImp implements MyServer{
@Override
public void fun() {
System.out.println("MyServerAImp>>>>>>>>>>>>>>");
}
}
package com.example.demo9.server;
//这里最好不要加@Service,除非有其它要求
public class MyServerBImp implements MyServer{
@Override
public void fun() {
System.out.println("MyServerBImp>>>>>>>>>>>>>>");
}
}
package com.example.demo9.registrar;
import com.example.demo9.server.MyServerAImp;
import com.example.demo9.server.MyServerBImp;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//GenericBeanDefinition对象设置BeanDefinition
GenericBeanDefinition genericBeanDefinitionMyServerAImp=new GenericBeanDefinition();
genericBeanDefinitionMyServerAImp.setBeanClass(MyServerAImp.class);
GenericBeanDefinition genericBeanDefinitionMyServerBImp=new GenericBeanDefinition();
genericBeanDefinitionMyServerBImp.setBeanClass(MyServerBImp.class);
//注册
registry.registerBeanDefinition("genericBeanDefinitionMyServerAImp",genericBeanDefinitionMyServerAImp);
registry.registerBeanDefinition("genericBeanDefinitionMyServerBImp",genericBeanDefinitionMyServerBImp);
}
}
package com.example.demo9.configuration;
import com.example.demo9.registrar.MyImportBeanDefinitionRegistrar;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(MyImportBeanDefinitionRegistrar.class)
public class MyConfiguration {
}
如何使用@import导入实现了ImportBeanDefinitionRegistrar接口的类?的更多相关文章
- 使用@import导入实现了ImportBeanDefinitionRegistrar接口的类,不能被注册为bean
今天在调试公司spring项目的时候发现了这样一个问题,由于我们的项目使用的是springboot就以springboot为例,代码如下: @Import({DataSourceRegister.cl ...
- ImportBeanDefinitionRegistrar接口实现bean动态注入
借助ImportBeanDefinitionRegistrar接口实现bean的动态注入https://www.jianshu.com/p/2b993ced6a4c ImportBeanDefinit ...
- 【Spring注解驱动开发】在@Import注解中使用ImportBeanDefinitionRegistrar向容器中注册bean
写在前面 在前面的文章中,我们学习了如何使用@Import注解向Spring容器中导入bean,可以使用@Import注解快速向容器中导入bean,小伙伴们可以参见<[Spring注解驱动开发] ...
- go定义接口以及类怎么使用接口
go定义接口以及类怎么使用接口 多态是指代码可以根据类型的具体实现采取不同行为的能力.如果一个类型实现了某个接口,所有使用这个接口的地方,都可以支持这种类型的值. 接口是用来定义行为的类型.这些被定义 ...
- @Import导入自定义选择器
@Import导入自定义选择器 之前一篇博文:Spring中的@Import注解已经详细介绍了@Import注解,不赘述. 需求描述 通过@import注解自定义组件选择器,将满足我们自定义的规则的b ...
- link和@import导入css文件的区别
(二者的区别其实是基础问题,但由于本人经常会忽略掉使用@import导入css文件这种方式,所以记录下来增加印象^^) 首先二者的引入方式: link:<link rel="style ...
- @import导入外部样式表与link链入外部样式表的区别
昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级. 今天就这个问题,度娘上找了很久,终于有个总结性的答案出 ...
- jsp中@import导入外部样式表与link链入外部样式表的区别
昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级.今天就这个问题具体总结如下: 先解释一下网页添加cs ...
- 关于CSS各种选择器,还有各种引入样式表的区别,import导入样式表,在介绍一些伪类选择器
(一)CSS选择器: 1.标签选择器:通过HTML的标签名直接选择该标签 2.类选择器:通过.选择器的名称{} 来对添加了class属性的标签进行选中 3.ID选择器:通过#选择器的名称{} 来对添加 ...
随机推荐
- iOS 10 新增plist文件属性
大概统计了一下需要加的一些字段列在下面: NSContactsUsageDescription -> 通讯录 NSMicrophoneUsageDescription -> 麦克风 NSP ...
- Eclipse 中 Syntax error on token "Invalid Character", delete this token 的解决
eclipse中遇到了Syntax error on token "Invalid Character", delete this token(令牌“无效字符”上的语法错误,删除此 ...
- \b 是单词边界锚点 word-boundary anchor,一个“\b”匹配一个单词的一端,两个“\b”匹配一个单词的头尾两端
123 $_ = "beforematcha? fter"; 124 if(/\b\w+a\b/){ 125 print "matched: < ...
- redis day02
Redis -带过期时间的key 如何删除掉的? 在redis内部有个 过期字典,所有带过期时间的都有过期字典 默认情况下 redis每秒会进行着10次过期字典的扫描,在每一次扫描过程里,执行如下 ...
- 如何编译(helloworld)可以在开发板上运行的应用
本节介绍如何编译可以在开发板上运行的应用,编译方法很简单.基于:iTOP4412开发板首先要确定一下环境变量,如下图所示,使用“cd”命令回到根目录,然后使用命令“vim .bashrc”打开环境变量 ...
- springboot 整合thymeleaf 书笔记
pom.xml依赖添加 <!--引入thymeleaf--> <dependency> <groupId>org.springframework.boot</ ...
- sql server 重命名表名,字段名
重命名表名: exec sp_rename 'oldName','newName'; 重命名字段名: exec sp_rename 'tableName.[oldName]','newName','c ...
- python之time模块和hashlib模块
一.time模块 import time print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的格式化时间,time.strftime(format) prin ...
- hdu5452
http://acm.hdu.edu.cn/showproblem.php?pid=5452 题意:给个图T(图G的最小生成树),然后再给定图G的剩余边,问你从图T中当且割一条边的情况再割图G中不属于 ...
- springboot学习笔记:6.内置tomcat启动和外部tomcat部署总结
springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XX ...