小编use*_*625的帖子

使用Guice的GoF标准工厂模式

我之前使用标准工厂模式方法创建类的实例(实现特定接口)使用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注释.但我不明白它究竟会对我有多大帮助.

java guice factory-pattern

5
推荐指数
1
解决办法
3945
查看次数

为什么mvn release:perform总是创建一个新的快照版本并将其上传到存储库而不是非快照发行版?

  1. 我在Bitbucket中创建了一个公共存储库,可以为我保存所有发行版和快照发行版。
  2. 我正在使用wagon-git将jar上传到发布存储库。

这是我在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)

我在做什么:

  1. mvn clean package (创建快照版本)
  2. mvn release:prepare (创建新的发行版本,并将该jar和标签适当地上传到我的git存储库中)
  3. 我签入更新的pom.xml,release.properties等。
  4. mvn release:perform -通过这一步骤,我希望将第2步创建的新发行版本上载到包含所有发行jar的存储库中。

相反,mvn release:perform会创建一个新的快照版本,并将该快照jar上传到releases存储库。

问题是:我如何设法将非快照发布jar上载到存储库,而不是始终创建和上载新快照版本?

我想念什么?

maven maven-release-plugin maven-deploy-plugin

5
推荐指数
1
解决办法
5084
查看次数

JDBI:dbi.onDemand 是否比使用 dbi.open 更受青睐?

我在我的应用程序中使用 JDBI 和 Dropwizard。我使用 dbi.open 命令获取 DAO 实例,然后使用它来运行各种查询。在“finally”块中,我使用 dao.close() 方法关闭连接。我还使用 dao.inTransaction 方法在一个事务中执行多个数据库语句。

虽然该应用程序已经运行了一段时间,没有出现太多问题,但最近我们在开发和生产环境中多次看到“PoolExhausted”异常。我现在想知道使用 dbi.onDemand 是否是比使用 dbi.open 更好的方法,这样就不需要每次最后都调用 close...使用 dbi.open 可能是任何连接泄漏背后的原因?

dbi jdbi dropwizard

3
推荐指数
1
解决办法
5033
查看次数