gpt4 book ai didi

java - Google Guice 辅助注入(inject)对象为 null

转载 作者:行者123 更新时间:2023-11-30 02:25:04 26 4
gpt4 key购买 nike

我需要在运行时使用用户定义的数据创建对象。我已经使用过这样做google guice 辅助注入(inject)。但是当我运行测试时,它抛出 null 指针异常。请让我知道我在哪里犯了错误。

IArtifacts 接口(interface)

public interface IArtifacts {

MavenMetaDataXMLDTO getArtifactsVersions();
}

ArtifactsService.java

public class ArtifactsService implements IArtifacts {

private ProductProfile productProfile;

@Inject
public ArtifactsService(@Assisted ProductProfile productProfile){
System.out.println(productProfile.getArtifactManagementURL());
this.productProfile=productProfile;
}

@Override
public MavenMetaDataXMLDTO getArtifactsVersions() {

System.out.println(productProfile.getArtifactManagementURL());
return null;
}
}

ArtifactsFactory接口(interface)

public interface ArtifactsFactory {

IArtifacts create(ProductProfile productProfile);
}

模块类

@Override
protected void configure() {
install(new FactoryModuleBuilder().implement(IArtifacts.class,ArtifactsService.class).build(ArtifactsFactory.class));
}

TestArtifacts.java

public class TestArtifacts {

@Inject // this obj is null
private ArtifactsFactory artifactsFactory;

private IArtifacts s;

public TestArtifacts(){

}

public void getdata(){
//Pass custom data to factory
this.s=artifactsFactory.create(Products.QA.get());
System.out.println(s.getArtifactsVersions());
}


}

休息端点

    @GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public String getartifacts(){
new TestArtifacts().getdata();
}

最佳答案

您在 Rest Endpoint 类中自行创建了 TestArtifacts 类的实例,但所有类都需要由 Guice 框架创建,而不是由您创建。

那么当你用 new 创建类时,Guice 框架应该如何向你的类注入(inject)一些东西呢?您还需要将类 TestArtifacts 注入(inject)您的 Rest 端点,并且您的 Rest 端点也必须由 Guice 创建。

更新:

也许这个链接会对您有所帮助

https://sites.google.com/a/athaydes.com/renato-athaydes/posts/jersey_guice_rest_api

关于java - Google Guice 辅助注入(inject)对象为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45855658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com