我目前正在尝试针对以下情况配置 Spring Boot (使用 Java Annotations 和 ComponentScan
):
情境
MyService
。MyService
,让我们把它MyDefaultService
。MyService
,则Spring应该实例MyDefaultService
化为“后备”。MyService
目前,让我们说MyCustomService
,那豆应 始终 接管优先MyDefaultService
自动装配依赖于时MyService
。在这方面,MyDefaultService
应该是 隐性的 (而不是@Primary
)。MyCustomService
即可将其“覆盖” MyDefaultService
。题
问题是:MyDefaultService
为了实现这一点,我需要如何为课程添加注释?
我到目前为止为解决问题所做的尝试
MyDefaultService
用@ConditionalOnMissingBean(MyService.class)
。无法MyDefaultService
使用,因为从未使用过,即使没有其他实现MyService
。@Primary
可以解决该问题。但是,它需要驻留在上MyCustomService
,我试图避免添加其他注释。本质上,我需要on 的 反 注。但是,我找不到这样的注释。@Primary``MyDefaultService
具体用例
我正在一个项目中开发服务层,而另一个项目将在其之上实现Web
UI层。UI项目与服务层项目有依赖关系。但是,对于在服务层实现的某些功能,我需要知道当前在Web上下文中登录的用户。因此,我必须在服务层项目中为该服务定义一个服务接口,以便可以由UI项目来实现。但是,为了在服务层项目中进行测试,我需要该接口的默认实现。另外,如果UI项目团队忘记实现此接口,则应用程序不应崩溃,而应实例化后备bean并发出警告。
谢谢!
艾伦
我建议FactoryBean
为此编写一个实现。您FactoryBean
将扫描bean工厂以查找实现的bean,MyService
如果找到实现的bean,它将从中返回该bean
getObject
。如果不是,则可以MyDefaultService
直接实例化并返回该实例。然后,您的工厂bean用添加了注释@Primary
。
像这样的片段(伪代码):
public class MyServiceFactory implements FactoryBean<MyService> {
ListableBeanFactory beanFactory;
public MyService getObject() {
Map beans = beanFactory.getBeansOfType(MyService.class)
if (beans.isEmpty())
return new MyDefaultService(); // plus args, obviously
else
return get_some_bean_from_the_map
}
}
然后
@Primary
@Bean
public MyServiceFactory MyServiceFactory() {
return new MyServiceFactory();
}
Spring将自动处理工厂bean(即,将MyService
对象像正常情况一样用作注入的bean)。
该解决方案不需要任何特殊的魔术,并且它的工作原理非常明显。您还可以处理错误的情况,例如MyService
声明了多个bean。
> 我知道Sqoop中可用的选项,但如果我是正确的,我想知道Sqoop是如何在实时实现中使用的(通常) 1.1sqoop命令放在shell脚本中,从调度程序/事件触发器调用。我可以有实时代码-这方面的例子,特别是在shell脚本中向Sqoop动态传递参数(如表名)。 1.2相信Ooozie工作流也可以使用。请举例说明 抱歉问了太多问题。我没有看到任何关于如何在实时场景中使用这些组件的文章/博客。
本文向大家介绍基于spring实现websocket实时推送实例,包括了基于spring实现websocket实时推送实例的使用技巧和注意事项,需要的朋友参考一下 基于spring框架来写的,websocket实时推送例子,具体内容如下 第一步:自己搭建一个springmvc项目,很简单,网上百度都有;pom文件添加以下: 我的spring版本是4.2.4的,所以websocket也是4.2.4的
本文向大家介绍AngularJS实现路由实例,包括了AngularJS实现路由实例的使用技巧和注意事项,需要的朋友参考一下 1、首先我们要引进angular.js和angular-route.js文件 2、然后我们要在html中创建锚点和容器(ng-view) 3、在模块中注入ngRoute依赖 4、配置路由 效果展示: 完整代码: 接下来我们做一个模拟项目路由 1、首先我们看一下我们所需要的文件
问题内容: 我正在学习Java,但是在和接口上找不到任何好的解释。 当我实现an时,我的Eclipse IDE创建了一个方法。 我可以在没有界面的情况下关闭流。但是,我不明白如何使用接口实现该方法。而且,此接口的目的是什么? 我也想知道:如何检查是否真的关闭? 我正在使用下面的基本代码 问题答案: 在我看来,您对接口不是很熟悉。在您发布的代码中,您无需实现。 您仅需要(或应该)实现,或者如果您将要
本文向大家介绍js实现简单实用的AJAX完整实例,包括了js实现简单实用的AJAX完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现简单实用的AJAX的方法。分享给大家供大家参考,具体如下: 更多关于ajax相关内容感兴趣的读者可查看本站专题:《JavaScript中ajax操作技巧总结》及《jquery中Ajax用法总结》 希望本文所述对大家ajax程序设计有所帮助。
SPDY 使用 TLS 的扩展称为 Next Protocol Negotiation (NPN)。在Java 中,我们有两种不同的方式选择的基于 NPN 的协议: 使用 ssl_npn,NPN 的开源 SSL 提供者。 使用通过 Jetty 的 NPN 扩展库。 在这个例子中使用 Jetty 库。如果你想使用 ssl_npn,请参阅https://github.com/benmmurphy/ss
本文向大家介绍Python实现类继承实例,包括了Python实现类继承实例的使用技巧和注意事项,需要的朋友参考一下 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例。 实例代码如下: 运行结果:
主要内容:1 Swing实现计算器1 Swing实现计算器 我们可以借助Swing的事件处理功能来开发Java计算器。让我们看看在Java中创建计算器的代码。 最终运行效果为: 点击下载完整计算器源码