package org.businessmanager.service; import org.businessmanager.dao.InvoiceDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class InvoiceNumberGeneratorImpl implements InvoiceNumberGenerator { private static Long DEFAULT_INVOICE_NUMBER = 100000L; @Autowired private InvoiceDao invoiceDao; @Override public synchronized Long getNextInvoiceNumber() { Long nextInvoiceNumber = invoiceDao.getMaxInvoiceNumber(); if(nextInvoiceNumber == null) { return DEFAULT_INVOICE_NUMBER; //TODO: use application configuration property here } return nextInvoiceNumber + 1; } }