如何在此Scala代码中阅读/理解@Inject()...?

时间:2016-04-03 20:41:18

标签: scala dependency-injection

this question中,答案说必须以这种方式定义Application类:

class Application @Inject()(val messagesApi: MessagesApi) extends Controller with I18nSupport {

我理解这一行:

  • 名为Application
  • 扩展Controller
  • 混入特质I18nSupport

如何阅读/理解中间的@Inject()(val ...)?为什么这样写,这是什么意思?

1 个答案:

答案 0 :(得分:0)

  

如何阅读/理解中间的@Inject()(val ...)?为什么这样写,这是什么意思?

  • @Inject()被称为annotation。注释允许向声明,类型或表达式添加任意元数据。可以在运行时或在编译时查询此元数据。
  • (val …)被称为primary constructor。构造函数是在创建类的实例时调用的子例程,其目的是设置对象的初始状态,以便它可以使用并满足其所有不变量。