WEB开发网
开发学院软件开发Java Scala与Spring:强强联合 阅读

Scala与Spring:强强联合

 2010-08-04 00:00:00 来源:WEB开发网   
核心提示: Scala与Spring的整合可以在运行期轻松将服务透明地注入到各种对象中,后面将会提到,Scala与Spring:强强联合(7),这种机制的技术基础是DDD,可以用一种优雅的方式将实体提升为富领域对象,在实例化完Person实体或从数据库中取出Person实体后就应该可以使用Notificat

Scala与Spring的整合可以在运行期轻松将服务透明地注入到各种对象中。后面将会提到,这种机制的技术基础是DDD,可以用一种优雅的方式将实体提升为富领域对象。

需求

为了说清楚何谓按需的依赖注入,我们为这个示例应用加一个新需求:在调用Person实体的link方法时,它不仅会链接相应的Person,还会调用NotificationService以通知链接的双方。下面的代码阐述了这个新需求:

class Person { 
  @BeanProperty var notificationService:NotificationService = _ 
  def link(relation:Person) = { 
   relations.add(relation) 
   notificationService.nofity(PersonLinkageNotification(this, relation)) 
  } 
  //other code omitted for readability 
 }

毫无疑问,在实例化完Person实体或从数据库中取出Person实体后就应该可以使用NotificationService了,无需手工设置。

使用Spring实现自动装配

我们使用Spring的自动装配来实现这个功能,这是通过Java单例类RichDomainObjectFactory达成的:

public class RichDomainObjectFactory implements BeanFactoryAware { 
 
  private AutowireCapableBeanFactory factory = null; 
     
  private static RichDomainObjectFactory singleton = new RichDomainObjectFactory(); 
   
  public static RichDomainObjectFactory autoWireFactory() { 
    return singleton; 
  } 
   
  public void autowire(Object instance) { 
    factory.autowireBeanProperties(instance) 
  } 
 
  public void setBeanFactory(BeanFactory factory) throws BeansException { 
    this.factory = (AutowireCapableBeanFactory) factory; 
  } 
   
}

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Scala Spring 强强联合

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接