簡體   English   中英

如何在單例類Spring Boot中使用服務(使用“通常”類連接不同的服務)

[英]How to use services within a singleton-class Spring Boot (wire up different services with a “usual” class)

我想為我的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();
    }
}

以下是Singleton:

@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();
    //...
    }
}

現在我讀到這篇文章 ,說如果手動實例化你的類(我在單例中做),你可能會遇到NullPointerException - 現在我的問題是:我該如何解決這個問題? 我得到了我的轉換器類,它需要是一些可以在另一個服務中完成的數據庫。 對我來說,這意味着我不僅可以在我的班級中擁有靜態成員(因為我使用自動服務)。 是否有可能在“通常的班級”中連接兩項服務?

現在我讀到這篇文章說如果你手動實例化你的類(我在單例中做),你可能會遇到NullPointerException。

您不必自己初始化ProjectConverter 您可以將其標記為@Component ,Spring將為您創建此類的Bean。

代碼片段:

@Component
public class ProjectConverter { ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM