我正在编写一个库,我使用sfl4j来处理日志。
我认为只要每个机构都能提供自己的实现,这是个好主意,然后,我的应用程序提供的日志将得到正确处理。
但我不知道是否必须提供实现作为传递依赖。
例如:
如果我只提供:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
我的lib的用户可以选择实现,但如果他只是在没有读取配置的情况下添加我的lib,它将无法正常工作
否则,如果我提供:
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
我的lib只在向其添加依赖项时才能正常工作,但如果用户想要使用其他slf4j,则必须排除我的。
你对此有何看法?
答案 0 :(得分:13)
您从不提供日志实施。客户端应用程序必须这样做。否则这将违反分离关注点。不要对未知客户做任何假设。