gpt4 book ai didi

java - 如何在单例类 Spring Boot 中使用服务(使用 "usual"类连接不同的服务)

转载 作者:行者123 更新时间:2023-11-29 04:13:19 25 4
gpt4 key购买 nike

我想为我的 Spring-Boot 应用程序运行一些测试,但我一直在单例中遇到 NullPointerException。我有以下设置:

@Service
public class ProjectServiceImpl implements ProjectService {
@Transactional
@Override
public void saveProject(ProjectDto projectDto) {
ProjectEntity projectEntity = ProjectConverter.getInstance().convertDtoToEntityWithDefaultFactory(projectDto);
entityManager.persist(projectEntity);
entityManager.flush();
}
}

以及以下单例:

@ComponentScan(myServicePackageImpl)
public class ProjectConverter {

private static ProjectConverter projectConverterInstance;

@Autowired
private FactoryEntityService factoryService;

public static ProjectConverter getInstance() {
if (projectConverterInstance == null) {
projectConverterInstance = new ProjectConverter();
}
return projectConverterInstance;
}

private ProjectConverter() {
}

@Transactional
public ProjectEntity convertDtoToEntityWithDefaultFactory(ProjectDto projectDto) {
FactoryEntity defaultFactory = this.factoryService.
getDefaultFactoryEntity();
//...
}
}

现在我读了this article那就是说,如果您手动实例化您的类(我在单例中这样做),您可能会遇到 NullPointerException - 现在我的问题是:我该如何解决这个问题?我得到了我的转换器类,它需要一些可以在另一个服务中完成的数据库内容。对我来说,这意味着我的类(class)中不能只有静态成员(因为我使用 Autowiring 服务)。甚至可以在“普通类(class)”中连接两个服务吗?

最佳答案

Now I read this article that said that you might run into a NullPointerException if you instantiate your class manually (which I am doing in the singleton).

您不必自己初始化 ProjectConverter。您可以将其标记为 @Component,Spring 将为您创建此类的 Bean。

代码片段:

@Component
public class ProjectConverter { ... }

关于java - 如何在单例类 Spring Boot 中使用服务(使用 "usual"类连接不同的服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824996/

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