Hibernate ORM 新特性之 Service(Registry)(三)

2014-11-24 10:55:46 · 作者: · 浏览: 1
public Class getServiceInitiated();
而org.hibernate.service.StandardServiceInitiator 继承了 org.hibernate.service.spi.ServiceInitiator 并提供了另外一个方法:
/**
* Initiates the managed service.
*
* @param configurationValues The configuration values in effect
* @param registry The service registry. Can be used to locate services needed to fulfill initiation.
*
* @return The initiated service.
*/
public R initiateService(Map configurationValues, ServiceRegistryImplementor registry);
认同下图所示, ServiceInitiator定义了一个Service的接口 以及如何初始化这个service.
所以, 当有了ServiceInitiator之后, 可以通过调用org.hibernate.boot.registry.StandardServiceRegistryBuilder 的方法添加到注册表中:
addInitiator(StandardServiceInitiator initiator)
addService(final Class serviceRole, final Service service)
hibernate在初始化这些service的时候, 会先初始化内置的, 所以, 如果你想要替换以后的标准service的话, 只需要原样调用上面两个方法之一就行了.
Hibernate 还提供了一些接口来供Service的创建者来使用(具体如何使用请参考javadoc,在此就不重复了):
org.hibernate.service.spi.Configurable
org.hibernate.service.spi.Manageable
org.hibernate.service.spi.ServiceRegistryAwareService
org.hibernate.service.spi.InjectService
org.hibernate.service.spi.Startable
org.hibernate.service.spi.Stoppable
org.hibernate.service.spi.Wrapped