也许这是一个容易被删除的问题,但以防万一。
我最近在我的服务上执行@eventlistener
注释方法时,怀疑这些方法是否应该包含在服务的接口上。
class FooServiceImpl implements FooService {
@EventListener
public void doSomethingWithEvent(ApplicationEvent event){
// do something
}
}
但是,另一方面,我的服务上有一个公共方法,但它不包括在接口上,出于某种原因,这对我来说很难闻(也许这只是一种习惯)。
那么,怎么办呢?这方面有什么惯例吗?
我想说这主要是基于意见,因为afaik这个问题没有真正的惯例。我没有标记你的问题,因为我认为这是一个很好的问题,因为我不确定它是在主题上还是在主题之外。
只要问自己以下问题:doSomethingWithEvent()
是我的服务的一部分吗?它是否是合同的一部分,它的使用者(使用fooservice
)的类)正在使用?
或者分解一下:使用fooservice
的方法是否可以直接调用doSomethingWithEvent()
?
我不这么认为。
已经有ApplicationListener
,那么为什么不直接实现它呢?
我有一些关于界面使用的一般问题: 为每个对象类创建接口的优势是什么? 接口应该只包含'getter'方法吗? 为什么不是二传手? 为什么我应该为每个对象类创建一个接口?它会在JUnit测试中为我服务吗? 例如: 谢谢
让我们继续看SocketConnector中的acceptConnect方法: @Override protected void acceptConnect() throws ConnectorException { new Thread(() -> { while (true && started) { Socket
问题内容: 我正在创建一个将结果作为JSON返回的API。当前值是否为null时是否存在最佳做法的当前最佳实践?例如: 要么 因为第二个较小,所以我倾向于这种样式,但是我不确定是否有首选样式。从客户的角度看,这两种样式在功能上似乎是等效的。每个都有优点或缺点吗? 问题答案: 第二个将节省少量带宽,但是如果您担心这一点,则还可以使用索引数组,而不用键填充JSON。显然,它比您现在拥有的要短得多。 在
问题内容: 我一直在使用Java的ConcurrentMap作为可从多个线程使用的地图。putIfAbsent是一种很棒的方法,比使用标准映射操作更容易读/写。我有一些看起来像这样的代码: 在可读性方面,这很棒,但是每次都确实需要创建一个新的HashSet,即使它已经在地图中也是如此。我可以这样写: 进行此更改后,它会失去一些可读性,但无需每次都创建HashSet。在这种情况下哪个更好?我倾向于第
在空手道中,我希望有一个模式变量,它是响应数据的超集,这样我就可以用相同的模式测试多个请求。 这对于GraphQL应该特别有用,因为请求本身定义了返回的字段。 预期模式: 回答数据: 在本例中,响应返回的所有键。数据应该在架构中,但架构中的任何键都不在响应中。数据应该被忽略。 在空手道中有没有办法做到这一点,或者有没有计划在将来增加这一功能? 编辑:更新了示例,因为唯一遗漏的属性是一个可为空的属性
每当我想在Docker容器中转发端口时,我使用一个简单的< code>-p 8080:8080命令。 现在,我在几个地方(这里和这里)读到,这可能是不安全的,我应该包括localhost环回,如下所示:。 有人能解释一下吗?什么时候应该这样做,实际的安全影响是什么?