我最初被教导构建3层的方式如下:
可实例化的A * er类不适合这些包,尤其是类,其中类主要对静态方法进行分组。它可以作为一种思想添加到服务中,但感觉很尴尬。
从那以后,我看到了更复杂的包结构(可能是从Maven借来的):
但是,我仍然没有看到哪里可以放置一个* er类,现在我看到其他类型的类弹出像自定义异常和Spring的这个原始模式(见下文)。通常,似乎这些是您通常在框架/ 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);
}
}
您如何将这些或任何其他“无法分类”分组?
答案 0 :(得分:1)
这取决于Read / Write和Emailer类的功能。
假设Emailer类发送电子邮件,甚至thoguh它是可实例化的类,将适合 util 或 helper 包,因为它不是紧密绑定到应用程序逻辑。
对于异常,我看到了将异常类放在正在使用它的包旁边的单独的* .exceptions包中,或者在使用它的包内。
e.g:
application.dao
application.dao.impl
application.dao.exceptions