按照Appfuse2.1的文档
http://java.net/projects/appfuse/downloads/download/appfuse-documentation-2.1.0.pdf如果你的DAO只是普通的CRUD(所需操作全部包含在GenericDAO中),则你只需要写好DAO对应的Entity即可。然后在hibernate.hbm.xml里注册一下你写的Entity(不管你是不是需要复杂的DAO,你都需要把你的Entity注册到这个文件里)。
然后在src/main/webapp/WEB-INF/applicationContext.xml里注册一个DAO如下:
</beans>
<bean id="personDao" class="org.appfuse.dao.hibernate.GenericDaoHibernate">
<constructor-arg value="org.appfuse.tutorial.model.Person"/>
</bean>
</beans>
在需要调用这个DAO的地方这样写即可:
private GenericDao<Person, Long> personDao;
@Autowired
public void setPersonDao(GenericDao<Person, Long> personDao) {
this.personDao = personDao;
}
针对这样DAO,你需要用它的Service(Appfuse里Service叫做Manager)的时候,在src/main/webapp/WEB-INF/applicationContext.xml里注册一个Manager,如下:
<beans>
<bean id="personManager" class="org.appfuse.service.impl.GenericManagerImpl">
<constructor-arg>
<bean class="org.appfuse.dao.hibernate.GenericDaoHibernate" autowire="byType">
<constructor-arg value="org.appfuse.tutorial.model.Person"/>
</bean>
</constructor-arg>
</bean>
</beans>
在需要调用这个Service的地方,这样写:
private GenericManager<Person, Long> personManager;
public void setPersonManager(GenericManager<Person, Long> personManager) {
this.personManager = personManager;
}
以上做法是非常简便的。但它所提供的操作仅限于GenericDao里的一些常用操作。
如果你的Service里要用多个Service或者其他的DAO,你就需要做一个复杂的Manager。这个复杂的Manager要继承GenericManager。GenericManager有泛型,需要指明Entity的class和key的class。例如上面的GenericDao<Person, Long>。
这时,如果你的DAO仍然要用一个普通的GenericDao,你就不需要上面那样复杂的Manager注册过程了。直接注册一个无参的Manager即可,例如:
<bean id="invoiceManager" class="org.appfuse.service.impl.InvoiceManagerImpl"/>
这个注册说明你做了InvoiceManager的Interface和这个Interface的实现类InvoiceManagerImpl。因为这个类继承了GenericManager,并在声明中给出了泛型,所以在注册的时候不需要参数了。
在这个Manager的实现类里,也无需像Appfuse2.1文档里说的那样做一个什么构造方法注入特殊DAO了。
在这个Manager里,如果你还需要其他的Service或者DAO,就像上面例子中说的那样,声明一个变量,并给这个变量写一个setter即可。
但是,如果你引用的是其他的Service(或你自己写的复杂的DAO),记住不要加@Autowired注解。如果引用的是GenericDao,则需要加注解。
=====June 7th, 2012=====
如果不是复杂Dao,不要在非本实体的Manager里通过Autowired引入。因为这时候不论用什么机制,都不能初始化这个Dao。
可以对要引用的其他Dao先做一个Manager。然后在本实体的Manager里引用新做的那个Manager。这时,Spring会在实例化Manager的时候实例化它里面的Dao。
如果非要直接引用其他实体的GenericDao,可以考虑用注入这个Dao的方式,例如:
<bean id="invoiceManager" class="org.appfuse.service.impl.InvoiceManagerImpl">
<constructor-arg>
<bean class="org.appfuse.dao.hibernate.GenericDaoHibernate" autowire="byType">
<constructor-arg value="org.appfuse.model.Invoice"/>
</bean>
</constructor-arg>
<property name="invoiceApplDao">
<bean class="org.appfuse.dao.hibernate.GenericDaoHibernate" autowire="byType">
<constructor-arg value="org.appfuse.model.InvoiceAppl"/>
</bean>
</property>
</bean>
private GenericDao<InvoiceAppl, Long> invoiceApplDao;
public void setInvoiceApplDao(GenericDao<InvoiceAppl, Long> invoiceApplDao){
this.invoiceApplDao = invoiceApplDao;
}
分享到:
相关推荐
本项目是关于利用AppFuse框架构建B2C(Business-to-Consumer)电子商务系统的实践研究,这涉及到一系列的技术和概念。 首先,我们需要理解B2C电子商务的核心特征。B2C模式是指企业直接面向消费者销售产品和服务的...
Appfuse框架解析,包括登陆验证,执行顺序,加载策略等。
### AppFuse开发框架(myapp)使用说明文档 #### 一、配置开发环境 AppFuse是一个开源的Java Web应用开发框架,旨在提供一个快速的应用程序开发基础。为了更好地使用AppFuse框架进行开发,以下是对开发环境配置的...
在AppFuse 2.0时代,它主要支持Struts或 Tapestry 框架,而非现代的Spring Boot。由于描述中提到“没有jar包”,这可能意味着下载的实例源码不包含运行所需的所有依赖库,因此需要开发者自行解决这个问题。 首先,...
【AppFuse 框架详解】 AppFuse 是一个由 Matt Raible 创建的开源项目,它为初学者提供了一个基础的 J2EE 框架,用于演示如何集成多个流行的技术,如 Spring、Hibernate、iBatis、Struts、xDcolet、JUnit、Taperstry...
appfuse 有struts2+hibernate+spring的整合 springmvc+hibernate+spring的整合 多模块,但模块都有 学习开发参考使用非常方便 可以到官方下载最新版的,我只是把自己下载的打包整理一下 注意哈,都是基于maven的...
社区反馈对其发展起到了关键作用,不断优化和改进使得AppFuse成为了一个遵循“最佳实践”的J2EE Web应用程序框架。文档和教程最早于2003年11月发布,自那以后,AppFuse不断更新和完善,成为了java.net网站上最受欢迎...
AppFuse 是一个基于Java平台的开源项目,旨在加速和简化Web应用程序的开发。它通过集成各种流行框架,如Struts、Spring、Hibernate等,提供了一个项目骨架,使得开发者能够快速搭建新项目的结构。AppFuse分为1.x和...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
**AppFuse 学习笔记(一):安装与部署** AppFuse 是一个开源项目,它提供了一种快速构建企业级 Web 应用程序的方式。它使用了多种流行的技术栈,如 Spring Boot、Hibernate、Thymeleaf 和 Maven,使得开发者可以更...
Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是基础架构的搭建。这不仅大大提升了开发效率,还保证...
#### 四、小结 AppFuse的配置涉及到多个软件的安装与环境变量的设定,以及项目级别的配置文件调整。通过遵循上述步骤,开发者可以有效地设置AppFuse开发环境,利用其提供的模板和工具,快速启动项目开发。对于不同...
AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发。它提供了一个基础架构,开发者可以在此基础上快速构建安全、可扩展的应用程序。AppFuse 2.1 版本是该项目的一个较早版本,但仍然包含了现代Web开发的核心...
**Appfuse** 是由 Matt Raible 开发的一款面向 J2EE 的框架,其主要目的是为开发者提供一套集成多个流行框架(如 Spring、Hibernate、iBatis、Struts、Xdoclet、JUnit 等)的开发模板。通过这一框架,开发者可以更...
06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬