小编spa*_*pam的帖子

当你拥有Spring和Dagger时,为什么要使用/开发Guice?

据我所知,Dagger确实生成了代码,而Guice和Spring依赖于运行时处理,因此Dagger的工作速度更快,但需要在程序员方面做更多的工作.由于性能优势,它对移动(Android)开发很有好处.

然而,当我们离开Guice和Spring时,后者有很多集成.如果我们可以使用Spring Framework(基本上做同样的事情,但提供更简单的数据库访问),那么开发/使用Guice有什么意义呢?

谷歌是不是试图通过创建自己的DI工具来重新发明轮子,而不是使用(并可能有助于)Spring Framework?

我正在寻找决策树,通过选择DI工具来指导.

java spring guice dagger-2

45
推荐指数
1
解决办法
2万
查看次数

Tinkerpop3连接到远程TitanDB服务器

我正在尝试使用Java中的Tinkerpop3作为客户端从已经运行的TitanDB服务器获取Graph对象(我不想创建服务器).

换句话说,我正在尝试实现这样的功能:public Graph obtainGraph(String serverIp,String graphName);

我试图像这样做: AWS Lambda + Tinkerpop/Gremlin + TitanDB on EC2 + AWS DynamoDB in cloud

但据我了解,TitanFactory.open()启动服务器,我不想这样做 - 我只想连接到现有的服务器.

文档以及Internet中的大多数材料使用内存中的图表作为示例,我找不到一个,它显示了如何:

  • 创建新图并将其保存在远程服务器上

  • 从远程服务器检索现有图

  • 更新这样的远程Graph,所以在添加/删除边缘后提交更改

  • 删除整个图表

我不想通过Gremlin语言(字符串)来做上述事情,而是通过Java API(TinkerpopBlueprins).这个人正在接近我需要的东西: 在Java中将顶点添加到TitanDB Graph 但是,他的方法已经将Graph作为参数.

我在Internet的很多地方都看到过,GraphFactory.open()获取了属性文件的路径,但是我还没有看到这种文件内容的例子,尤其是TitanDB的相关数据,所以我更喜欢使用Configuration对象.

图形图形= GraphFactory.open(new BaseConfiguration())

说,没有gremlin.graph属性.

配置配置= new BaseConfiguration(); configuration.setProperty("gremlin.graph","titan");

图形图形= GraphFactory.open(配置);

说GraphFactory无法找到[titan] - 确保jar在类路径中

是否有任何静态类型的构建器,其中包含枚举和常量,而不是Map,它将告诉我,我必须提供哪些属性以及它们的类型是什么?是否有任何开源项目,使用Tinkerpop3作为客户端连接到远程TitanDB服务器,我可以用作例子吗?

我希望看到完整的工作示例,而不是内存与外部配置.

java gremlin titan tinkerpop-blueprint tinkerpop3

7
推荐指数
1
解决办法
1808
查看次数

IntelliJ IDEA + AspectJ

我试图在IntelliJ IDEA中的示例项目中使用AspectJ.我有使用Spring AOP的经验,但这是我第一次使用AspectJ,并且无法使其工作.

我想按照此处的描述进行操作:https://www.jetbrains.com/help/idea/2017.1/aspectj.html

我的build.gradle:

apply plugin: 'java'

repositories
{
    mavenCentral()
}

dependencies
{
    compile "org.projectlombok:lombok:+"

    compile "org.aspectj:aspectjrt:+"
    compile "org.aspectj:aspectjweaver:+"
    compile "org.aspectj:aspectjtools:+"
}

buildscript
{
    repositories
    {
        maven
        {
            url "https://maven.eveoh.nl/content/repositories/releases"
        }
    }

    dependencies
    {
        classpath "nl.eveoh:gradle-aspectj:+"
    }
}

project.ext
{
    aspectjVersion = '+'
}

apply plugin: 'aspectj'
Run Code Online (Sandbox Code Playgroud)

我的方面:

package aspects;

import lombok.SneakyThrows;
import lombok.experimental.FieldDefaults;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

import java.util.Arrays;

@Aspect
@FieldDefaults(makeFinal = true)
public aspect LoggingAspect
{
    Journal journal = Journal.INSTANCE;

    pointcut all(ProceedingJoinPoint …
Run Code Online (Sandbox Code Playgroud)

java aop aspectj intellij-idea aspects

7
推荐指数
1
解决办法
4066
查看次数

使用Let's Encrypt证书的Gitlab:将您的ACME客户端升级到ACMEv2

我在Ubuntu 14.04上安装了Gitlab。无法续订我们的加密证书。我已将Ubuntu升级到16.04,然后进行apt-get update和&& apt-get upgrade升级,但似乎它没有将ACME客户端升级到v2,这使我可以更新证书。如何更新证书?

gitlab-cli renew-le-certs 
Run Code Online (Sandbox Code Playgroud)

结果是:

letsencrypt_certificate[elenx.net] (letsencrypt::http_authorization
line 3) had an error: Acme::Client::Error::Unauthorized:
acme_certificate[staging]
(/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb
line 20) had an error: Acme::Client::Error::Unauthorized: Account
creation on ACMEv1 is disabled. Please upgrade your ACME client to a
version that supports ACMEv2 / RFC 8555. See
https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430
for details.
Run Code Online (Sandbox Code Playgroud)

ssl-certificate gitlab

6
推荐指数
1
解决办法
328
查看次数

使用 Gradle 激活 Lombok 注释处理器

我喜欢使用 Lombok,但它需要在 IDE 设置中启用注释处理器。因为开发人员使用不同的 IDE,并且 CI/CD 有自己的编译流程,而且我真的很想避免向初级开发人员解释为什么他们需要选中此复选框,所以我正在寻找一种方法来避免选中此复选框。理想情况下,我想让初级人员运行 git clone 然后 ./gradlew 运行。Gradle 有没有办法完全设置注释处理器(无需手动单击)?

如果它不仅仅适用于 IntelliJ IDEA,那就太好了。

我看到的主要问题是 Lombok 需要在 IntelliJ IDEA 中安装并激活 Lombok 插件。

是否可以通过运行以下命令来运行使用 Lombok 的项目: git clone ... && ./gradlew run ?

java lombok intellij-lombok-plugin

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