Как отобразить бины из указанного файла JAR в Spring

Я разработал веб-приложение Spring, и оно работает нормально. У меня есть структура отображения создания бина, как: Мой контроллер:

@Controller
@RequestMapping("appointmentDiary")
public class AppointmentDiaryController {   
    private IAppointmentDiaryService appointmentDiaryService;   
    public IAppointmentDiaryService getAppointmentDiaryService() {
        return appointmentDiaryService;
    }
    public void setAppointmentDiaryService(IAppointmentDiaryService appointmentDiaryService) {
        this.appointmentDiaryService = appointmentDiaryService;
    }
}

My Service Interface:
public interface IAppointmentDiaryService
{
    public Integer getAppointmentDiaryNo();
}

My  Impl Class:
public class AppointmentDiaryServiceImpl  implements IAppointmentDiaryService{  
    private IAppointmentDiaryDAO appointmentDiaryDAO;
    public IAppointmentDiaryDAO getAppointmentDiaryDAO(){
        return appointmentDiaryDAO;
    }
    public void setAppointmentDiaryDAO(IAppointmentDiaryDAO appointmentDiaryDAO)    {
        this.appointmentDiaryDAO = appointmentDiaryDAO;
    }
    public Integer getAppointmentDiaryNo(){     
        InternalResultsResponse<Object> objResponse = getAppointmentDiaryDAO().getAppointmentDiaryNo();
        return objResponse;
    }
My DAO Interface: 
public interface IAppointmentDiaryDAO extends IGenericDAO
{   
    public InternalResultsResponse<Object> getAppointmentDiaryNo();
}

My DAO Impl calss:
public class AppointmentDiaryDAOImpl extends GenericDAOImpl implements
        IAppointmentDiaryDAO {  
    public InternalResultsResponse<Object> getAppointmentDiaryNo() {
        InternalResultsResponse<Object> response = new InternalResultsResponse<Object>();
        String sql = SqlProperties.getSQLStatement("getAppointmentDiaryNo");
        Session session = getSession();
        Transaction tr = session.beginTransaction();
        response = HibernateUtil.executeSQLQuery(session, sql);
        tr.commit();
        return response;
    }
}

Теперь я не хочу использовать эту структуру, я хочу создать jar-файл со всеми интерфейсами служб, классами Impl, DAO Interface и Impl Class, что означает, что кроме контроллера все должно быть в jar-файле. Но когда я создаю jar-файл, добавляю путь к классу проекта и запускаю проект, в это время возникает исключение: Исключение:

 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [com.nmmc.cess.service.impl.AppointmentDiaryServiceImpl] for bean with name 'appointmentDiaryServiceImpl' defined in ServletContext resource [/WEB-INF/config/cess-service-application-context.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: com/nmmc/cess/service/IAppointmentDiaryService

Итак, как я могу настроить, чтобы сопоставить bean-компоненты, определенные в XML-файле Spring. Моя конфигурация bean работает нормально, когда я запускаю проект без использования этого jar-файла. Пожалуйста, дайте решение. Заранее спасибо.

1 ответ

Почему вы отображаете контроллер с аннотацией, а классы service и dao - с помощью xml, Spring сначала ищет аннотированные объекты, а затем загружает компоненты XML, а в вашем приложении вы должны загрузить затем dao service и, наконец, контроллеры. Сделайте их все аннотированными с помощью @Service и @Repository или даже с @Component, чтобы вам не приходилось беспокоиться о том, какие объекты загружаются раньше других.

Другие вопросы по тегам