Что такое замок Windsor, и почему я должен заботиться?

Устранена подобная проблема, разрешенная с помощью изменения версии

//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.0")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.9")

С вышеизложенными изменениями ниже исключения было разрешено (примечание: система имеет java 7)

Исключение получено с более высокой версией:

[info] Set current project to helloworld (in build file:/Users/suniltonger/Projects/play/helloworld/helloworld/)
java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:559)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$com$typesafe$sbt$web$SbtWeb$$load$1.apply(SbtWeb.scala:559)
    at scala.Option.fold(Option.scala:157)
    at com.typesafe.sbt.web.SbtWeb$.com$typesafe$sbt$web$SbtWeb$$load(SbtWeb.scala:573)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at com.typesafe.sbt.web.SbtWeb$$anonfun$globalSettings$1$$anonfun$apply$1.apply(SbtWeb.scala:143)
    at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:55)
    at sbt.Project$.setProject(Project.scala:319)
    at sbt.BuiltinCommands$.doLoadProject(Main.scala:503)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:484)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
    at sbt.Command$.process(Command.scala:93)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
    at sbt.State$$anon$1.process(State.scala:184)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.MainLoop$.next(MainLoop.scala:96)
    at sbt.MainLoop$.run(MainLoop.scala:89)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
    at sbt.Using.apply(Using.scala:24)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
    at sbt.MainLoop$.runLogged(MainLoop.scala:22)
    at sbt.StandardMain$.runManaged(Main.scala:54)
    at sbt.xMain.run(Main.scala:29)
    at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
[error] Use 'last' for the full log.
[debug] > load-failed
186
задан Matt Hinze 24 September 2008 в 23:04
поделиться

1 ответ

Замок Windsor является инверсией инструмента управления. Существуют другие как он.

Это может дать Вам объекты с предварительно созданными и предпроводными зависимостями прямо там. весь граф объектов, созданный через отражение и конфигурацию, а не "новый" оператор.

Запускаются здесь: http://tech.groups.yahoo.com/group/altdotnet/message/10434

<час>

Предполагает, что у Вас есть электронное письмо, отправляющее класс. EmailSender. Предположите, что у Вас есть другой класс WorkflowStepper. В WorkflowStepper необходимо использовать EmailSender.

Вы могли всегда говорить new EmailSender().Send(emailMessage);

, но что - использование new - создает ПЛОТНОЕ СОЕДИНЕНИЕ, которое трудно изменить. (это, крошечным является изобретенный пример, в конце концов)

Поэтому, что, если, вместо newing этот плохой парень в WorkflowStepper, Вы просто передали его в конструктора?

Таким образом, кто бы ни назвал его, имел к новому EmailSender.

new WorkflowStepper(emailSender).Step()

Предполагают, что у Вас есть сотни этих небольших классов, которые только несут одну ответственность (google SRP).. и Вы используете несколько из них в WorkflowStepper:

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

Предполагают не вызывать беспокойство о деталях EmailSender, когда Вы пишете WorkflowStepper, или AlertRegistry

Вы просто волнуетесь о беспокойстве, с которым Вы работаете.

Предполагают, что этот целый график (дерево) объектов и зависимостей обеспечен электричеством во ВРЕМЯ ВЫПОЛНЕНИЯ, так, чтобы, когда Вы делаете это:

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

Вы получаете реальное соглашение WorkflowStepper со всеми зависимостями, автоматически заполненными, где Вам нужны они.

нет никакого new

, Это всего происходит - потому что это знает то, чему нужно что.

И можно записать меньше дефектов с лучше разработанным, код DRY тестируемым и повторяемым способом.

352
ответ дан Robert Harvey 4 November 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: