蛋糕模式和弹簧配置器

时间:2011-05-07 13:57:52

标签: spring scala configuration dependency-injection

Spring提供实用程序Configurer来解析具有外部配置数据的占位符(有关详细信息,请参阅文档)。如何使用Cake Pattern以类似的方式配置我的组件(即使用外部配置来解析占位符)?

例如:

 // properties configuration file

driver=com.mysql.jdbc.Driver
dbname=mysql:mydb
user=michael
password=*****

trait JdbcSupport {
  val dataSource:Datasource
  ...
}

trait OrderDAOComponent {self: JdbcSupport =>
  val dao: OrderDAO
  class OrderDAOImpl extends OrderDAO {...} // use the JDBC data source here
}

如何使用属性配置文件使用OrderDAO初始化Cake Pattern

1 个答案:

答案 0 :(得分:2)

trait XmlConfigJdbcSupport extends JdbcSupport {
  val xmlFile:String
  override val dataSource = readConfigAndReturnDatasource()
}

object MyContext extends OrderDAOComponent with XmlConfigJdbcSupport {
  override val xmlFile = "config.xml"
}

dataSource应该是一个懒惰的val,以避免初始化顺序出现问题。