我之前使用标准工厂模式方法创建类的实例(实现特定接口)使用Factory类,该类具有"create"方法,该方法根据传递给它的参数返回正确的实例(下面给出的示例片段) ):
public class SimpleFactory {
public static SimpleObjectInterface getSimpleObject(int data) {
SimpleObjectInterface toReturn;
switch(data) {
case 1:
toReturn = new OneSimpleObject();
break;
case 2:
toReturn = new TwoSimpleObject();
break;
default:
toReturn = new DefaultSimpleObject();
break;
}
return toReturn;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我在我的项目中使用Guice进行依赖注入.我的问题是如何使用Guice实现上述功能?需要哪个实现实例是在运行时根据一些用户输入决定的.
我查看了Provider和@Named注释.但我不明白它究竟会对我有多大帮助.
这是我在pom.xml中的条目:
<pluginRepositories>
<pluginRepository>
<id>synergian-repo</id>
<url>https://raw.github.com/synergian/wagon-git/releases</url>
</pluginRepository>
</pluginRepositories>
...
<distributionManagement>
<repository>
<id>my id</id>
<name>my repo name</name>
<url>my repo url</url>
</repository>
</distributionManagement>
...
<build>
<extensions>
<extension>
<groupId>ar.com.synergian</groupId>
<artifactId>wagon-git</artifactId>
<version>0.2.5</version>
</extension>
....
</build>
Run Code Online (Sandbox Code Playgroud)
我在做什么:
mvn clean package (创建快照版本)mvn release:prepare (创建新的发行版本,并将该jar和标签适当地上传到我的git存储库中)mvn release:perform -通过这一步骤,我希望将第2步创建的新发行版本上载到包含所有发行jar的存储库中。相反,mvn release:perform会创建一个新的快照版本,并将该快照jar上传到releases存储库。
问题是:我如何设法将非快照发布jar上载到存储库,而不是始终创建和上载新快照版本?
我想念什么?
我在我的应用程序中使用 JDBI 和 Dropwizard。我使用 dbi.open 命令获取 DAO 实例,然后使用它来运行各种查询。在“finally”块中,我使用 dao.close() 方法关闭连接。我还使用 dao.inTransaction 方法在一个事务中执行多个数据库语句。
虽然该应用程序已经运行了一段时间,没有出现太多问题,但最近我们在开发和生产环境中多次看到“PoolExhausted”异常。我现在想知道使用 dbi.onDemand 是否是比使用 dbi.open 更好的方法,这样就不需要每次最后都调用 close...使用 dbi.open 可能是任何连接泄漏背后的原因?