Как я был первоначально преподавал структурировать 3-уровневой выглядит следующим образом:Где разместить Reader/Writer/Emailer ... * er классы в этой структуре пакета?
- дао
- домен
- услуги
- Utils
- JSF (бобы) ...
Класс A * er, который является instantiatable, не подходит ни одному из этих пакетов, особенно utils, где классы будут y групповые статические методы. Это может быть добавлено к сервисам как побочным, но это неудобно.
С тех пор я видел более сложную структуру пакета (возможно, заимствованных из Maven):
- постоянной (harcoded констант и перечислений)
- дао
- dao.impl (реализации интерфейсов)
- модели
- ресурсы (для имущества и конфигурационных файлов)
- сервис
- service.impl
- щ ...
Однако я до сих пор не вижу, где можно было бы разместить класс * эр, и теперь я вижу другие типы классов выскакивают как пользовательские исключения, и это оригинальный шаблон для весны (см. ниже). В общем, кажется, что это типы классов, которые вы обычно находите в рамках/API.
import org.springframework.context.ApplicationContext;
public class AppContext {
private static ApplicationContext ctx;
/**
* Injected from the class "ApplicationContextProvider" which is automatically
* loaded during Spring-Initialization.
*/
public static void setApplicationContext(ApplicationContext applicationContext) {
ctx = applicationContext;
}
/**
* Get access to the Spring ApplicationContext from everywhere in your Application.
*
* @return
*/
public static ApplicationContext getApplicationContext() {
return ctx;
}
}
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContextProvider implements ApplicationContextAware {
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
// Wiring the ApplicationContext into a static method
AppContext.setApplicationContext(ctx);
}
}
Как бы сгруппировать эти или любые другие "unclassifiables"?
Мне нравится идея хелперов пакета. Наличие субпакетов в зависимости от того, как используется класс, также кажется разумным. Спасибо, я приму этот подход :) –