我正在开发一个Spring boot应用程序,它使用了很多其他第三方库。所有这些库都构建在spring核心之上。通常出现的常见问题是DuplicateBeanException
。假设不同库中的bean-name相同,spring在尝试启动服务器时抛出错误。因为我不能控制第三方罐子。我必须重命名我的应用程序中的bean:下面是我为处理这个场景而编写的代码片段。但这不是一个有效的解决方案,因为将来可能会再次出现一些重复的bean。我如何以通用的方式解决它,以便当任何重复的bean出现时,我的应用程序可以处理和初始化这些bean。
我处理重复bean的代码:
@Configuration
public class ExternalBeanConfiguration {
@Bean(employeeLib1)
public Employee getEmployee() {
return new Employee();
}
@Bean(employeeLib2)
public com.another.library.Employee getEmployee() {
return new com.another.library.Employee();
}
}
当您通过@componetscan
配置从外部库扫描bean的位置时,您可以指定beannameGenerator
来定义检测到的bean的名称。
@Configuration
@ComponentScan(basePackages = { "com.foo.lib1" , "com.foo.lib2"}, nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public class ExternalBeanConfiguration {
}
FullyQualifiedAnnotationBeannameGenerator
正是用来解决javadoc中提到的问题:
如果由于多个自动检测到的组件具有相同的非限定类名(即,具有相同名称但位于不同包中的类)而导致命名冲突,请选择此bean命名策略而不是{@code AnnotationBeanNameGenerator}
它将bean命名为默认bean名称的完全限定类名,这样即使不同的包具有相同的类名,它仍然具有不同的bean名称。
本文向大家介绍在Django的通用视图中处理Context的方法,包括了在Django的通用视图中处理Context的方法的使用技巧和注意事项,需要的朋友参考一下 制作友好的模板Context 你也许已经注意到范例中的出版商列表模板在变量 object_list 里保存所有的书籍。这个方法工作的很好,只是对编写模板的人不太友好。 他们必须知道这里正在处理的是书籍。 更好的变量名应该是publish
本文向大家介绍java通过jni调用opencv处理图像的方法,包括了java通过jni调用opencv处理图像的方法的使用技巧和注意事项,需要的朋友参考一下 1. 建立java文件 2. 切换到工程src文件夹 javac getImageFeature.java javah getImageFeature 生成 getImageFeature.h 文件 3. VS2013建立dll工程 添加g
本文向大家介绍SpringCloud通用请求字段拦截处理方法,包括了SpringCloud通用请求字段拦截处理方法的使用技巧和注意事项,需要的朋友参考一下 背景 以SpringCloud构建的微服务系统为例,使用前后端分离的架构,每个系统都会提供一些通用的请求参数,例如移动端的系统版本信息、IMEI信息,Web端的IP信息,浏览器版本信息等,这些参数可能放在header里,也可以放在参数里,如果这
一些批处理任务可以使用spring batch现成的组件完全的组装.例如ItemReader和ItemWriter实现可配置覆盖范围广泛的场景,然而,对于大多数情况下,必须编写自定义代码。应用程序开发人员的主要API人口点是Tasklet,ItemReader ItemWriter和各种各样的监听器接口.最简单的批处理任务能够使用Spring BatchItemReader现成的输出,但通常情况下
问题内容: 我在Java中使用ResultSet,但不确定如何正确关闭它。我正在考虑使用ResultSet构造一个HashMap,然后在那之后关闭ResultSet。这种HashMap技术是有效的还是有更有效的方法来处理这种情况?我需要键和值,因此使用HashMap似乎是一个合理的选择。 如果使用HashMap是最有效的方法,如何在代码中构造和使用HashMap? 这是我尝试过的: 问题答案: 遍