使用open source产品组装你的web应用架构(三)
2004-04-12 12:29
471 查看
下面是
可以看出:每个对象都可以在Spring配置信息中用<bean>标签引用。在这里,SpringAPI。
既然我们已经组装配置好了ServiceBeans,就需要把BusinessServiceObject和DAO也组装起来,并把这些对象配到一个事务管理器(transactionmanager)里。
在Spring中的配置信息:
图4是我们对象搭建的一个提纲。从中可以看出,每个对象都联系着Spring,并且能通过Spring注入到其他对象。把它与Spring的配置文件比较,观察他们之间的关系
图4.Spring就是这样基于配置文件,将各个Bean搭建在一起。
这个例子使用一个
Spring和Bean的还有一点要注意的:bean可以以用两种方式创造。这些都在单例模式(Sington)和原型模式(propotype)中定义了。默认的方式是singleton,这意味着共享的实例将被束缚。而原形模式是在Spring用到bean的时候允许新建实例的。当每个用户需要得到他们自己Bean的Copy时,你应该仅使用prototype模式。(更多的请参考设计模式中的单例模式和原形模式)
HibernateSessionFactory和
HibernateTransactionManager:的配置:
<beanid="mySessionFactory"
class="org.springframework.orm.hibernate.
LocalSessionFactoryBean">
<propertyname="mappingResources">
<list>
<value>
com/meagle/bo/Order.hbm.xml
</value>
<value>
com/meagle/bo/OrderLineItem.hbm.xml
</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">
net.sf.hibernate.dialect.MySQLDialect
</prop>
<propkey="hibernate.show_sql">
false
</prop>
<propkey="hibernate.proxool.xml">
C:/MyWebApps/.../WEB-INF/proxool.xml
</prop>
<propkey="hibernate.proxool.pool_alias">
spring
</prop>
</props>
</property>
</bean>
<!--TransactionmanagerforasingleHibernate
SessionFactory(alternativetoJTA)-->
<beanid="myTransactionManager"
class="org.
springframework.
orm.
hibernate.
HibernateTransactionManager">
<propertyname="sessionFactory">
<reflocal="mySessionFactory"/>
</property>
</bean>
可以看出:每个对象都可以在Spring配置信息中用<bean>标签引用。在这里,
mySessionFactory
引用了
HibernateSessionFactory
,而
myTransactionManager
引用了
HibernateTransactionManage
。
注意代码中
myTransactionMangerBean
有个
sessionFactory
属性。
HibernateTransactionManager有个
sessionFactorysetter和getter方法,这是用来在Spring启动的时候实现“依赖注入”(dependencyinjection)的。在
sessionFactory属性里引用
mySessionFactory。这两个对象在Spring容器初始化后就被组装了起来了。这样的搭配让你从单例(singletonobjects)和工厂(factories)中解放了出来,降低了代码的维护代价。
mySessionFactory.的两个属性,分别是用来注入
mappingResources和
hibernatePropertes
的。通常,如果你在
Spring
之外使用
Hibernate,
这样的设置应该放在hibernate.cfg.xml中的。不管怎样,Spring提供了一个便捷的方式-----在Spring内部配置中并入了Hibernate的配置。如果要得到更多的信息,可以查阅
既然我们已经组装配置好了ServiceBeans,就需要把BusinessServiceObject和DAO也组装起来,并把这些对象配到一个事务管理器(transactionmanager)里。
在Spring中的配置信息:
<!--ORDERSERVICE-->
<beanid="orderService"
class="org.
springframework.
transaction.
interceptor.
TransactionProxyFactoryBean">
<propertyname="transactionManager">
<reflocal="myTransactionManager"/>
</property>
<propertyname="target">
<reflocal="orderTarget"/>
</property>
<propertyname="transactionAttributes">
<props>
<propkey="find*">
PROPAGATION_REQUIRED,readOnly,-OrderException
</prop>
<propkey="save*">
PROPAGATION_REQUIRED,-OrderException
</prop>
</props>
</property>
</bean>
<!--ORDERTARGETPRIMARYBUSINESSOBJECT:
Hibernateimplementation-->
<beanid="orderTarget"
class="com.
meagle.
service.
spring.
OrderServiceSpringImpl">
<propertyname="orderDAO">
<reflocal="orderDAO"/>
</property>
</bean>
<!--ORDERDAOOBJECT-->
<beanid="orderDAO"
class="com.
meagle.
service.
dao.
hibernate.
OrderHibernateDAO">
<propertyname="sessionFactory">
<reflocal="mySessionFactory"/>
</property>
</bean>
图4是我们对象搭建的一个提纲。从中可以看出,每个对象都联系着Spring,并且能通过Spring注入到其他对象。把它与Spring的配置文件比较,观察他们之间的关系
图4.Spring就是这样基于配置文件,将各个Bean搭建在一起。
这个例子使用一个
TransactionProxyFactoryBean
,它定义了一个
setTransactionManager()
。
这对象很有用,他能很方便的处理你申明的事物还有
ServiceObject
。
你可以通过
transactionAttributes
属性来定义怎样处理。
想知道更多还是参考
TransactionAttributeEditor吧。
TransactionProxyFactoryBean还有个setter.这会被我们Businessserviceobject(
orderTarget)引用,
orderTarget
定义了
业务服务层,并且它还有个属性,由
setOrderDAO()
引用。这个属性
Spring和Bean的还有一点要注意的:bean可以以用两种方式创造。这些都在单例模式(Sington)和原型模式(propotype)中定义了。默认的方式是singleton,这意味着共享的实例将被束缚。而原形模式是在Spring用到bean的时候允许新建实例的。当每个用户需要得到他们自己Bean的Copy时,你应该仅使用prototype模式。(更多的请参考设计模式中的单例模式和原形模式)
相关文章推荐
- 使用open source产品组装你的web应用架构(三) 转载
- 使用open source产品组装你的web应用架构(四) 转载
- 使用open source产品组装你的web应用架构
- 使用open source产品组装你的web应用架构(二)
- 使用open source产品组装你的web应用架构(一)
- 使用open source产品组装你的web应用架构(struts+spring+hibernate)
- 使用open source产品组装你的web应用架构(四)
- 使用open source产品组装你的web应用架构(struts+spring+hibernate)
- UML软件工程组织 使用open source产品组装你的web应用架构
- 使用open source产品组装你的web应用架构(二)
- 使用open source产品组装你的web应用架构
- 使用open source产品组装你的web应用架构(一)
- [转载]使用open source产品组装你的web应用架构(struts+spring+hibernate)
- wiring的运行(使用open source产品组装你的web应用架构)
- 使用open source产品组装你的web应用架构(struts+spring+hibernate)
- 使用open source产品组装你的web应用架构(struts+spring+hibernate)
- 使用open source产品组装你的web应用架构[转贴,只作为收藏,非本人原创]
- 使用open source产品组装你的web应用架构(转)
- 使用open source产品组装你的web应用架构(二) 转载
- 使用open source产品组装你的web应用架构