2013-11-13 1 views
0

package com.lhoussaine.springjsfjpa.entities;родовое обслуживание и контролер весна

@Table (имя = "адрес") @Entity общественного класса Адрес {

@Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 
    private String streetNumber; 
    private String streetName; 
    private String city; 
    getter/setter } 

и у меня есть 30 объектов.

сейчас хранилища.

package com.lhoussaine.springjsfjpa.repositories;

импорт org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.data.rest.repository.annotation.RestResource;

импорт com.lhoussaine.springjsfjpa.entities.Address;

@RestResource (отн = "адрес", путь = "адрес")

общедоступный интерфейс AddressRepository расширяет JpaRepository {

}

здесь я не нужно implemente операции CRUD спасибо! к spring-data-jpa! и я хочу такой же стандарт для контроллера и служб.

общедоступный интерфейс IAddressService { }

пакет com.lhoussaine.springjsfjpa.services.generic;

импорт java.util.List;

общественный абстрактный класс GenericService {
общественный аннотация T create (T saved);
public abstract void remove (T deleted);
Публичная аннотация T findById (K id);
Публичный аннотация Список findAll(); public abstract T removeById (K id);

}

пакет com.lhoussaine.springjsfjpa.services.impl;

@Service @Transactional общественного класса AddressService расширяет GenericService реализует IAddressService {
@Autowired частный AddressRepository iaddressRepository;

public Address create (адрес сохранен) {
Адрес адрес = сохранен; return iaddressRepository.save (адрес);

public void удалить (Адрес удален) { iaddressRepository.удалить (исключить);
}

общественности Адрес findById (Integer идентификатор) {
возврата iaddressRepository.findOne (идентификатор);
}

общественности Список FindAll() {
возвращение iaddressRepository.findAll();
}

Public Address removeById (целочисленный идентификатор) {
Адрес адр = iaddressRepository.findOne (ID);
if (addr! = Null) { iaddressRepository.delete (addr);
}
return addr; }}

теперь вопрос: с контроллером, как я могу сделать? Контроллер разработки для каждого класса, зная, что у меня есть 30 классов обслуживания. Есть ли что-то, приближающееся к тому же стандарту, например spring-data-jpa, но для служб и контроллера? Как вы видите, с классами услуг! Я обязан создавать классы genericService и создавать интерфейс для каждого класса, который у меня есть в моих объектах пакета. если непонятно сообщите пожалуйста! thanks

+0

Отформатируйте свой код как код, а не как цитируемый текст. Отступьте это правильно. –

ответ

1

Контроллеры и службы не должны быть общими. Хотя понятно, что каждый объект в вашем приложении может быть создан или найден по идентификатору, у служб должны быть только методы, необходимые для реализации бизнес-логики приложения.

И контроллеры должны быть созданы для реализации слоя пользовательского интерфейса вашего приложения. Итак, как только у вас есть спецификация (или четкая идея) о том, как должна выглядеть и работать конкретная страница вашего приложения, затем реализуйте тэ-контроллер и службы для реализации этой страницы.

Если ваше приложение является таким общим, что все, что он делает, это создавать, обновлять и удалять строки в таблицах, тогда вам не нужно ничего реализовывать: будет создан общий веб-интерфейс базы данных, такой как PHPMyAdmin.

+0

Merci Jean-baptiste. :) Конечно, я знаю это! но juste знать, есть ли рамки, которые могут сделать жизнь легкой. Большое спасибо! –

+0

Вы знаете это, но все же ищете универсальные сервисы и общие контроллеры. У вас не должно быть общих служб и общих контроллеров. Вы не должны иметь один сервлет на класс сущности и один контроллер на класс сущности. –

0

Вы можете использовать общие службы и контроллеры только без аннотаций, то есть с конфигурацией XML. Для контроллеров вам также необходимо установить карту < [methodName], org.springframework.web.bind.annotation.RequestMapping> для каждого контроллера и расширить (переопределить) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping для использования Это. См. Пример https://sites.google.com/site/beigeerp/home/spring-generic-controller