java web应用程序布局,请解释一些设计原则/模式

我正在看这个使用hibernate,jsp和spring框架的java web应用程序。 (据我所知!)

文件布局是这样的:

classes/com/example/project1 

在project1中

 /dao _entity_Dao.java /dao/hibernate/ _entity_DaoHibernate.java /factory DaoFactory.java DaoFactoryImpl.java /managers _entity_Manager.java /managers/impl _entity_ManagerImpl.java /model _entity_.java /service _xxxx_Service.java /service/impl/ _xxxx_ServiceImpl.java 

你们有人在某处读过这种布局吗? 它被认为是最佳实践吗?

工厂与经理和服务有什么区别? (高水平)

对于使用Spring构建的应用程序的典型布局,我将查看随其附带的示例Web应用程序(意味着Spring)。

使用像DaoFactory这样的东西绝对不是最佳实践,Daos应该注入。 一般情况下,除了一些不寻常的情况,你不应该需要带有Spring的工厂。 注入是在Web应用程序启动时完成的,spring读取配置信息并构造所有对象并根据配置xml和/或注释将其插入(这假设您的对象具有单一范围,这对于无状态的事情是常见的daos和服务,作为原型的东西获得在应用程序要求时创建的新副本)。

在Spring应用程序中,服务类似于无状态会话Bean,它是一个包含用例的应用程序逻辑的事务层。 因此,如果您的用户执行的操作会导致多个不同的表更新,您可以将daos注入该服务,让该服务上的方法执行daos上的更新,并配置Spring以将该服务包装在使该方法具有事务性的代理。

我见过经理用作我所说的服务的另一个名字。 在这里,我不知道他们正在做什么。

我不喜欢将接口和impl组合在一个项目中的想法。 仅仅因为你想要使用接口并不意味着你想要使用impl并且它是繁琐的传递依赖。 主要原因是因为将有多个impl(假设,即JPA / JDBC / Hibernate,或Axis2 / CXF等)。 接口不应该绑定到实现,否则丢失点。 这也允许简单的dependency injection,因为impls只是驻留在类路径上,然后像Proxy或Spring(例如)之类的东西可以注入实现。

很有可能,您只需要:

 Interface Project dao EntityDao types Entity HibernateImpl Project dao EntityHibernateDao src/main/resources/ EntityMapping.cfg.xml